私の新しいプロジェクトでは、すべてのコンポーネントが Azure にデプロイされます。RabbitMQ を使用してイベントを処理するサードパーティ アプリケーションがあり、これらのイベントをサブスクライブして処理し、イベントのデータを自分のデータベースに保存したいと考えています。
最善の方法は何ですか?webjobs を使用して、RabbitMQ 用の独自のカスタム トリガー/バインダーを作成していますか?
事前にアドバイスをありがとう
要件に基づいて、Azure WebJob は目的を達成するための理想的なアプローチであると思います。その場合、WebJob をコンシューマー クライアントとして使用して、イベントをサブスクライブし、データを処理できます。Web ジョブを作成し、Mitra が提供するリンクに従ってイベントをサブスクライブし、Web ジョブにロジック プロセスを実装してみてください。
Web ジョブは、Azure Web アプリのコンテキストでバックグラウンド プロセスとして実行されることに注意してください。WebJob を継続的に実行するには、標準モードまたは高度なモードで実行し、「常時オン」設定を有効にする必要があります。
スケーリングを考慮して、Azure Web サイトのスケーリング機能を使用して、追加の Web ジョブ インスタンスをスケーリングできます。スケーリングについては、このチュートリアルを参照してください。
サブスクリプション ベースのルーティングを行うには、Rabbitmq でトピックを使用できます。トピックを使用してイベントを特定のキューにプッシュすると、それらのキューのコンシューマーが処理を実行してデータベースにデータを書き込むことができます。注意すべき唯一のことは、各キューに正しいルーティング キーを用意することです。
そうすれば、サブスクリプションベースのメカニズムを持つことができます。このアプローチの唯一の点は、イベントごとに 1 つのキューが存在することです。
イベントごとに 1 つのキューを持つことの利点は、イベントの追跡が容易になり、デバッグが容易になることです。
イベントの数が非常に多い場合は、キューを 1 つしか持つことができませんが、メッセージを消費した後、イベントをトリガーする必要があります。
参照用のリンクは次のとおりです: https://www.rabbitmq.com/tutorials/tutorial-five-python.html