Merge pull request #9617 from mfo/US/move_low_priority_email_in_low_priority_queue

amelioration(email): passe les jobs non prioritaire [appelons ça des bulk email], dans la queue de low_priority
This commit is contained in:
mfo 2023-10-19 03:25:57 +00:00 committed by GitHub
commit 5ad724a4cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 190 additions and 35 deletions

View file

@ -0,0 +1,14 @@
class PriorizedMailDeliveryJob < ActionMailer::MailDeliveryJob
def queue_name
mailer, action_name = @arguments
if mailer.constantize.critical_email?(action_name)
super
else
custom_queue
end
end
def custom_queue
ENV.fetch('BULK_EMAIL_QUEUE') { Rails.application.config.action_mailer.deliver_later_queue_name }
end
end

View file

@ -39,9 +39,7 @@ class AdministrateurMailer < ApplicationMailer
reply_to: CONTACT_EMAIL)
end
private
def forced_delivery_for_action?
def self.critical_email?(action_name)
action_name == "activate_before_expiration"
end
end

View file

@ -20,4 +20,8 @@ class AdministrationMailer < ApplicationMailer
subject: subject,
reply_to: CONTACT_EMAIL)
end
def self.critical_email?(action_name)
false
end
end

View file

@ -2,6 +2,7 @@ class ApplicationMailer < ActionMailer::Base
include MailerDolistConcern
include MailerMonitoringConcern
include BalancedDeliveryConcern
include PriorityDeliveryConcern
helper :application # gives access to all helpers defined within `application_helper`.
default from: "#{APPLICATION_NAME} <#{CONTACT_EMAIL}>"

View file

@ -19,4 +19,8 @@ class AvisMailer < ApplicationMailer
mail(to: email, subject: subject)
end
end
def self.critical_email?(action_name)
false
end
end

View file

@ -2,16 +2,16 @@ module BalancedDeliveryConcern
extend ActiveSupport::Concern
included do
before_action :add_delivery_method, if: :forced_delivery?
before_action :add_delivery_method, if: :forced_delivery_provider?
def critical_email?
self.class.critical_email?(action_name)
end
private
def forced_delivery_for_action?
false
end
def forced_delivery?
SafeMailer.forced_delivery_method.present? && forced_delivery_for_action?
def forced_delivery_provider?
SafeMailer.forced_delivery_method.present? && critical_email?
end
def add_delivery_method

View file

@ -0,0 +1,10 @@
module PriorityDeliveryConcern
extend ActiveSupport::Concern
included do
self.delivery_job = PriorizedMailDeliveryJob
def self.critical_email?(action_name)
raise NotImplementedError
end
end
end

View file

@ -6,6 +6,8 @@ class DeviseUserMailer < Devise::Mailer
include MailerDolistConcern
include MailerMonitoringConcern
include BalancedDeliveryConcern
include PriorityDeliveryConcern
layout 'mailers/layout'
def template_paths
@ -19,7 +21,7 @@ class DeviseUserMailer < Devise::Mailer
super
end
def forced_delivery_for_action?
def self.critical_email?(action_name)
true
end
end

View file

@ -184,6 +184,10 @@ class DossierMailer < ApplicationMailer
end
end
def self.critical_email?(action_name)
false
end
protected
def prevent_perform_deliveries

View file

@ -22,6 +22,10 @@ class ExpertMailer < ApplicationMailer
mail(template_name: 'send_dossier_decision', to: email, subject: subject)
end
def self.critical_email?(action_name)
false
end
end
def decision_dossier(dossier)

View file

@ -18,4 +18,8 @@ class GroupeGestionnaireMailer < ApplicationMailer
mail(bcc: added_gestionnaire_emails, subject: subject)
end
def self.critical_email?(action_name)
false
end
end

View file

@ -27,4 +27,8 @@ class GroupeInstructeurMailer < ApplicationMailer
mail(bcc: added_instructeur_emails, subject: subject)
end
def self.critical_email?(action_name)
false
end
end

View file

@ -45,9 +45,7 @@ class InstructeurMailer < ApplicationMailer
mail(to: instructeur.email, subject: subject)
end
private
def forced_delivery_for_action?
def self.critical_email?(action_name)
action_name == "send_login_token"
end
end

View file

@ -33,7 +33,7 @@ class InviteMailer < ApplicationMailer
reply_to: reply_to)
end
def forced_delivery_for_action?
def self.critical_email?(action_name)
true
end
end

View file

@ -48,6 +48,10 @@ class NotificationMailer < ApplicationMailer
with(dossier: dossier).send_notification
end
def self.critical_email?(action_name)
false
end
private
def set_services_publics_plus

View file

@ -30,4 +30,8 @@ class PreactivateUsersMailer < ApplicationMailer
reply_to: CONTACT_EMAIL,
body: body)
end
def self.critical_email?(action_name)
false
end
end

View file

@ -8,6 +8,10 @@ class ResendAttestationMailer < ApplicationMailer
mail(to: to, subject: subject, body: body(dossier))
end
def self.critical_email?(action_name)
false
end
private
def body(dossier)

View file

@ -4,4 +4,8 @@ class SuperAdminMailer < ApplicationMailer
mail(to: to, subject: "Dolist report", body: "Ci-joint le rapport d'emails récents envoyés via Dolist.")
end
def self.critical_email?(action_name)
false
end
end

View file

@ -67,7 +67,7 @@ class UserMailer < ApplicationMailer
mail(to: administrateur_or_instructeur.email, subject: subject)
end
def forced_delivery_for_action?
def self.critical_email?(action_name)
['france_connect_merge_confirmation', "new_account_warning", "ask_for_merge", "invite_instructeur"].include?(action_name)
end
end