0

いくつかの動作を支援する簡単なソリューションを実装しようとしています。基本的に、次のような特定の URL でリスナーを作成したい

    localhost:3000/listen

JSON をポスト リクエストとして送信するサード パーティ サービスとのコールバックがあります。私のレールルートでは、その名前空間への投稿リクエストを受け入れるために、ルートが設定されています。

私が実現したいのは、新しい投稿が入るたびにいくつかのロジックを実行し、通常の Web サービスを中断することなくそのロジックを非同期で実行することです。たとえば、POST リクエストには何らかのデータが含まれます。データにブール値 "true" が含まれている場合は、Rails Mailer を起動する必要があります。通常は単純な Rails コントローラー アクションでこれを行うことができますが、これは正しくありません。

これを処理するための最良のアプローチについて何か考えはありますか? これは、eventmachine のような宝石で最適でしょうか? 誰かがフィードバックを提供して、簡単な解決策を実装できるとしたら、それは素晴らしいことです!

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 に答える