RabbitMQ利用
💪 中に入ると…。
最近MSAを勉強している間に、MicroService間の通信を考えました.
そして,両者の通信を支援する中間エージェントとして機能するRabbitMQを理解した.
ここでは、RabbitMQについて簡単に説明します.データベースの変更など、複数のマイクロサービス間で情報を共有する必要があることがわかります.
この場合、直接通信するのではなく、通信エージェントを中間に配置して情報を共有できます.
エージェントは、送信するメッセージを受信します.通信先がオフラインの場合、エージェントはオンラインでメッセージを送信します.
△簡単に考えてみれば、メッセージキューのような感じでいいです.
サービス通信には、REST APIのような要求後待機応答と、RabbitMQのような要求後待機応答と、応答の到来時に応答を受信する2つの非同期方式があることに注意してください.
🐰 RabbitMQ準備完了
私はCloudAMPでRabbitMQを使ったことがあります.
△かわいい動物たちが印象的でした.
このサイトでは、実習用に無料のソウルバージョンのインスタンスを作成しました.
作成後は、インスタンスに入り、以下のAMP URLを使用するだけです.
🐹 Producer&Commerの作成
今回の実験の構造は,Dockerを用いて実行されたDjangoアプリケーションで生成されたメッセージがDockerを用いて実行されたFlashで受信されることを保証することを目的としている.
Producer
まず、Djangoアプリケーションでメッセージを送信するProducerを作成しました.
これらのコードをさらに説明すると、
paramsでは、上記のAMP URLをパラメータとして書いて接続します.
チャネルに接続チャネルを作成し、作成したpublish()を介してメッセージを渡します.
コードの作成が完了したら、ビューを表示します.pyとurls.pyを変更して、特定のURLを呼び出すときにpublish()関数を実行できます.
Consumer
次に、Flaskで着信メッセージを受信するConsumerを作成しました.
これらのコードをさらに説明すると、
チャネルへのコードは上の生産者と同じです.
channel.「queue declare」に、メッセージを受信するエージェント名をリストします.
その後、メッセージが受信されると、コールバック()関数が作成されます.
簡単な印刷コードを作成して実践しましたが、プロジェクトの方向に合わせて変更できます.
basic consumerを使用して、メッセージを受信する場所と、どのコールバック関数を使用するかを指定できます.
こうぞう
参考までに、構造について説明させていただきます.
生産者にとって、Djangoのアプリケーションごとに伝達する情報が異なり、エージェントを個別に設定できるため、特定のアプリケーションに存在する必要があります.
consumerの場合、ファイルをFlash全体に配置してメッセージを受信します.
もちろん、この構造に従う必要はありません.そのため、プロジェクトの状況を参考にして調整するだけでいいです.
🦝 通信実習
今、私たちは通信のために基本的な準備をしています.
以下に、通信を検証するための実践的な方法を示します.
docker-compose exec backend sh
python consumer.py
適切なURLをReference
この問題について(RabbitMQ利用), 我々は、より多くの情報をここで見つけました https://velog.io/@lungnahahd/RabbitMQ-활용テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol