2014-09-11 1 views
0

Я только что узнал/начал использовать Sidekiq сегодня для обработки фоновой обработки входящих сообщений электронной почты и вложений, но я немного потерял лучший способ получить тело электронной почты и вложения в рабочий для обработки.Sidekiq: Передайте тело электронной почты и приложения для обработки?

Приложение My RoR размещено на Heroku и получает входящие письма через Mailgun к контроллеру, который затем запускает моего работника. Внутри рабочего - вызов стороннему API для загрузки моих сообщений электронной почты и вложений (думаю, DropBox.)

Mailgun предварительно анализирует все и отправляет его как параметры, но из того, что я понимаю о Sidekiq, t хотите передать все объекты, такие как тело электронной почты и/или вложения, как показано здесь.

@attach_count = params["attachment-count"] 
@from = params["from"] 
@subject = params["subject"] 
@msgbody = params["body-html"] 
ProcessEmailWorker.perform_async(@id, @attach_count, @from, @subject, @msgbody) 

Какова наилучшая практика для получения этих предметов моему работнику?

ответ

1

После разговора с другим разработчик я решил сделать следующее:

  1. Настройка маршрута в Mailgun для хранения входящего сообщения электронной почты, но отправлять уведомления на мой контроллер

  2. Есть мой контроллер захватить входящий идентификатор сообщения и передать по моему рабочему

  3. Изнутри моего работника, использовать идентификационное сообщение для выполнения GET для Mailgun, чтобы получить сохраненное сообщение (и его вложения)

  4. Обработайте сообщение/вложения и загрузите их в мой провайдер облачных хранилищ.

1

Я предполагаю, что Mailgun отправляется на ваш контроллер.

  1. Вы можете отправить тело POST в качестве параметра одной строки в сторону Sidekiq и пересмотреть все.
  2. Вы можете сохранить данные в Redis или вашу базу данных для обработки в Sidekiq.
  3. Вы можете отправить содержимое электронной почты в качестве хэша строк:

    { 'предмет' => ..., 'тело' => ...}

Смежные вопросы