0

我正在尝试实施一个简单的解决方案来帮助解决某些行为。基本上我想在特定的 url 上创建一个监听器,比如

    localhost:3000/listen

我有一个第 3 方服务的回调,该服务将 JSON 作为发布请求发送。在我的 rails 路线中,我设置了路线,以接受对该名称空间的发布请求。

我想要发生的事情是,在有新帖子出现时运行某些逻辑,并异步运行该逻辑,而不会中断正常的 Web 服务。例如,post 请求将包含一些数据,如果数据具有布尔值“true”,我们需要触发 Rails Mailer。我通常可以通过简单的 rails 控制器操作来做到这一点,但这是不正确的。

关于处理这个问题的最佳方法有什么想法吗?最好使用像 eventmachine 这样的 gem 吗?如果有人可以提供反馈以实施一个简单的解决方案,那就太好了!

4

1 回答 1

1

我会看看你的背景工作。我是Sidekiq的粉丝,流行的替代品是ResqueDelayedJob

您的控制器将收到响应,并安排它在后台执行。这将异步发送邮件(或您需要它做的任何事情)。

class CallbackController < ApplicationController


  def listen_third_party
    data = params.slice([:params, :you, :care, :about])
    if data[:boolean_field] == true
      CallbackMailer.perform_async(data)
    end
  end

end
于 2013-10-08T20:50:42.063 回答