• Sean McGivern's avatar
    Move NotificationService calls to Sidekiq · a5ddd4e6
    Sean McGivern authored
    The NotificationService has to do quite a lot of work to calculate the
    recipients for an email. Where possible, we should try to avoid doing this in an
    HTTP request, because the mail are sent by Sidekiq anyway, so there's no need to
    schedule those emails immediately.
    
    This commit creates a generic Sidekiq worker that uses Global ID to serialise
    and deserialise its arguments, then forwards them to the NotificationService.
    The NotificationService gains an `#async` method, so you can replace:
    
        notification_service.new_issue(issue, current_user)
    
    With:
    
        notification_service.async.new_issue(issue, current_user)
    
    And have everything else work as normal, except that calculating the recipients
    will be done by Sidekiq, which will then schedule further Sidekiq jobs to send
    each email.
    a5ddd4e6
mail_scheduler_queue.rb 207 Bytes