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:
commit
5ad724a4cb
26 changed files with 190 additions and 35 deletions
14
app/jobs/priorized_mail_delivery_job.rb
Normal file
14
app/jobs/priorized_mail_delivery_job.rb
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -20,4 +20,8 @@ class AdministrationMailer < ApplicationMailer
|
|||
subject: subject,
|
||||
reply_to: CONTACT_EMAIL)
|
||||
end
|
||||
|
||||
def self.critical_email?(action_name)
|
||||
false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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}>"
|
||||
|
|
|
@ -19,4 +19,8 @@ class AvisMailer < ApplicationMailer
|
|||
mail(to: email, subject: subject)
|
||||
end
|
||||
end
|
||||
|
||||
def self.critical_email?(action_name)
|
||||
false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
|
10
app/mailers/concerns/priority_delivery_concern.rb
Normal file
10
app/mailers/concerns/priority_delivery_concern.rb
Normal 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
|
|
@ -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
|
||||
|
|
|
@ -184,6 +184,10 @@ class DossierMailer < ApplicationMailer
|
|||
end
|
||||
end
|
||||
|
||||
def self.critical_email?(action_name)
|
||||
false
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def prevent_perform_deliveries
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -18,4 +18,8 @@ class GroupeGestionnaireMailer < ApplicationMailer
|
|||
|
||||
mail(bcc: added_gestionnaire_emails, subject: subject)
|
||||
end
|
||||
|
||||
def self.critical_email?(action_name)
|
||||
false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -27,4 +27,8 @@ class GroupeInstructeurMailer < ApplicationMailer
|
|||
|
||||
mail(bcc: added_instructeur_emails, subject: subject)
|
||||
end
|
||||
|
||||
def self.critical_email?(action_name)
|
||||
false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -30,4 +30,8 @@ class PreactivateUsersMailer < ApplicationMailer
|
|||
reply_to: CONTACT_EMAIL,
|
||||
body: body)
|
||||
end
|
||||
|
||||
def self.critical_email?(action_name)
|
||||
false
|
||||
end
|
||||
end
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue