首页 > 解决方案 > 接收电子邮件并将它们移动到 sidekiq 队列

问题描述

我的网站上有一个消息传递应用程序(前端 + API),用户可以在其中相互发送消息。

目前,每次通过表单输入消息并发送到我的 API 时,我的后端MessageService都会启动,并执行许多操作,包括向对方发送电子邮件通知。

我想实现一个系统,用户可以直接回复电子邮件,并且以某种方式这将由我的应用程序处理,MessageService就像消息是通过我的前端应用程序通过 POST 发送的一样。

为了做到这一点,我正在考虑以下 TODO

  1. 首先设置一个自定义邮件域,如@mail.example.com
  2. 找到可以接收发送到此地址的电子邮件的服务(支付一些 SASS 或自己设置一些邮件服务器)。理想情况下,它将基于云/AWS
  3. 将所有收到的电子邮件转发到我的 redis / sidekiq 队列之一
  4. 让用我最喜欢的语言(Ruby/Rails)编写的工作人员从我的队列中读取消息,这样我就可以将所有逻辑处理转发到我的MessageService

你有关于我如何实现 2 和 3 的提示吗(将收到的电子邮件转发到 sidekiq 队列)

标签: amazon-web-servicesemailmessage-queuesidekiqmail-server

解决方案


不确定您是否使用 Rails,Rails 6 是下一个版本,它将包含 ActionMailbox,其用途与您描述的相似。

查看前沿指南https://edgeguides.rubyonrails.org/action_mailbox_basics.html虽然它尚未发布并且您可能正在使用其他东西,但您可以从它们的实现中获得想法。

在指南中提到了几个适配器,其中之一是使用Amazon Simple Email Service,您只需将接收电子邮件连接到应用程序中的端点,然后该端点将处理请求、保存数据以供以后使用并安排工作人员,例如:MessageServiceWorker.perform_async(message.id).


推荐阅读