2017-02-04 8 views
0

私は、その応答が別のアプリケーション(アプリケーションB)のデータに依存するレールコントローラを持っています。railsコントローラ内のメッセージキューの応答を取得

私はアプリケーション間の通信にRabbitMqを使用しています。

キューワーカーがアプリケーションBから応答を受け取るまで、コントローラからの応答をレンダリングできません。現在、アプリケーションAでHTTPコールを取得すると、RabbitMqキューを介してアプリケーションBに公開して必要なデータ。私は「スニーカー」の宝石によって作られたキューに、アプリケーションBの応答を聞いています。アプリケーションAのコントローラー内の「スニーカー」キューから取り出したデータを受信したいと考えています。

これで、RabbitMq、コントローラー内のキュー応答をどのように待つことができますか? また、コントローラ内の応答を待つことができる場合、どのHTTP応答に対してどのキュー応答がどのようになるか把握する方法を教えてください。

答えて

0

2番目の問題に対処するために、ランダムに生成された文字列を、アプリケーションBに送信する要求とともに送信することができます。また、応答中のアプリケーションBは、要求と同じ文字列を送信します。したがって、コントローラAは、応答がどの要求であるかを知る。

今、最初の質問になると、私はrabbitmqがこのようなことを行う正しいツールではないと思います。あなたがメッセージを待つことができたとしても、それは非常に遅い事です。アプリケーションBをAPIとして公開するのがより良い方法です。アプリケーションの速度が何度も向上します。

APIがオプションでない場合は、コンシューマを作成する方法についてthis linkをご覧ください。

関連する問題