ホームページ >バックエンド開発 >PHPチュートリアル >Rabbitmq はコンシューマの実行が成功したかどうかをどのようにして知るのでしょうか。
シナリオ: 注文を出し、在庫を差し引きます。
私の考えは、発注のタスクをキューに入れて一つずつ処理し、在庫を差し引くときにミスがないようにすることです。
それはプロデューサーとコンシューマーです
ユーザーが UI で [注文を送信] をクリックすると、タスクはキューに配置され、キューがタスクの結果を処理するのを待ち、結果 (成功) に基づいてページがジャンプします。または失敗)
しかし、疑問があります: キューが処理された後、結果をプロデューサーに通知するにはどうすればよいでしょうか?
RabbitMQ を例に挙げますが、誰かコードを提供できますか?
シナリオ: 注文を出し、在庫を差し引きます。
私の考えは、発注のタスクをキューに入れて一つずつ処理し、在庫を差し引くときにミスがないようにすることです。
それはプロデューサーとコンシューマーです
ユーザーが UI で [注文を送信] をクリックすると、タスクはキューに配置され、キューがタスクの結果を処理するのを待ち、結果 (成功) に基づいてページがジャンプします。または失敗)
しかし、疑問があります: キューが処理された後、結果をプロデューサーに通知するにはどうすればよいでしょうか?
RabbitMQ を例に挙げますが、誰かコードを提供できますか?
quene
メッセージが到着したかどうか、具体的にはビジネスが正常に実行されたかどうかのみを保証できます。このメッセージキューは保証されていません。
プロデューサーはメッセージをパブリッシュした後、キュー b などの別の返信メッセージ キューをリッスンします。
コンシューマーが消費を終了した後、結果メッセージをキュー b にプッシュします。
このようにして、元のプロデューサーは返された結果を取得できます。
RabbitMQ で RPC を実装するメカニズムは次のとおりです:
クライアントがリクエスト(メッセージ)を送信すると、replyTo(キュー名。処理が完了した後にこのキューに通知するメッセージをサーバーに送信するように指示するために使用されます)とcorrelationId(識別番号)の2つの値が設定されます。処理が完了した後、サーバーはこの属性を返す必要があります。クライアントは、この ID に基づいてどのリクエストが正常に実行されたかを知ることができます。