Sidekiq:通过电子邮件正文和附件进行处理?

时间:2014-09-11 23:25:36

标签: ruby-on-rails heroku sidekiq mailgun

我刚刚学习/开始使用Sidekiq来处理传入电子邮件和附件的后台处理,但是在将电子邮件正文和附件提供给工作人员进行处理的最佳方法上有点遗失。

我的RoR应用程序托管在Heroku上,并通过Mailgun接收传入的电子邮件给控制器,然后启动我的工作人员。在工作者内部是调用第三方API来上传我的电子邮件和附件(想想DropBox。)

Mailgun预解析所有内容并将其作为参数发送,但根据我对Sidekiq的理解,我不想传递整个对象,如电子邮件正文和/或附件,如此处所示。

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

将这些物品交给我的工人的最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

我假设Mailgun正在向你的控制器发帖。

  1. 您可以将POST正文作为单个字符串参数发送给Sidekiq并让它重新解析所有内容。
  2. 您可以将数据保存到Redis或数据库,以便在Sidekiq中进行处理。
  3. 您可以将电子邮件内容作为字符串哈希发送:

    {' subject' => ......,'身体' => ......}

答案 1 :(得分:1)

与其他开发者交谈后,我选择了以下内容:

  1. 在Mailgun中设置路由以存储传入的电子邮件,但是要向控制器发布通知

  2. 让我的控制器获取传入的消息ID并将其传递给我的工作人员

  3. 在我的工作人员中,使用消息ID对Mailgun执行GET以检索存储的消息(及其附件)

  4. 处理邮件/附件并将其上传到我的云存储提供商。