【问题标题】:Sidekiq: Pass email body and attachments for processing?Sidekiq:传递电子邮件正文和附件进行处理?
【发布时间】:2014-09-11 23:25:36
【问题描述】:

我今天刚刚学习/开始使用 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) 

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

【问题讨论】:

    标签: ruby-on-rails heroku sidekiq mailgun


    【解决方案1】:

    我假设 Mailgun 正在向您的控制器发布信息。

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

      { '主题' => ..., '正文' => ... }

    【讨论】:

      【解决方案2】:

      在与另一位开发人员交谈后,我选择执行以下操作:

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

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

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

      4. 处理消息/附件并将它们上传到我的云存储提供商。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-01
        • 2015-05-20
        • 1970-01-01
        • 2018-07-24
        • 2018-11-09
        • 2011-11-22
        • 1970-01-01
        • 2017-12-12
        相关资源
        最近更新 更多