答えて
非同期メッセージングは、システムが切断された方法で通信できるようにします。両方のシステムが同時に作業を完了できる必要はありません。
他にも利点があります。多くの場合、メッセージングは(時には意図しない)スロットルメカニズムを提供します。これにより、多くのリクエストがすべて同時に受信されると、受信システムが圧倒されることがなくなります。
メッセージングシステムの多くは、メッセージングプラットフォームまたは受信システムがクラッシュした場合でも、メッセージが最終的に配信されることを保証する、永続性と信頼性の機能を提供します。
メッセージキューも間接的なレイヤーを提供します。キューにメッセージを配置するシステムでは、誰がメッセージを受信しているかを必ずしも知る必要はありません。受信者は、送信者にまったく影響を与えることなく、微妙にまたは劇的に変化する可能性があります。このような疎結合は通常望ましい。
多くのメッセージングソリューションもトランザクションに参加できます。これにより、システムはメッセージを受信し、応答してデータベースを更新することができ、両方が成功したか、どちらも成功しなかったことを知ることができます。必要に応じて、メッセージの受信を「ロールバック」して、問題が発生した場合は再試行することができます。
メッセージキューは信頼性の高いメッセージングを提供します。メッセージが完全に失われないようにします。それでも依然として遅延メッセージキューなどに送られることはありますが、システムから完全に消えることはありません。明示的に削除されない限り、元のクライアントにスタックされていてもどこかにコピーが常に存在します。
メッセージキューは、メッセージの損失がビジネスに害を及ぼし、システムが不安定になるような状況で使用する必要があります。それらの使用にはオーバーヘッドがあるため、ビジネス要件に応じて実装する必要があります。
実装されている状況では、凍結されたメッセージ(サービスが停止しているために処理できないメッセージ、メッセージが間違ってフォーマットされているなど)を確認するモニタリングプロセスを導入する必要があります。 )適切に扱います。
信頼できるメッセージングはメッセージングの実装で提供される場合と提供されない場合があります。メッセージングの非同期性は、そのアプリケーションの原動力です。 – topchef
質問は、一般的なメッセージングではなく、メッセージキューの使用に向けられています。キューは非同期操作を提供しません。キューを使用せずに取得できます。彼らがしているのは、すべてのステップでメッセージの信頼性の高いFIFOストアを提供することです。 –
ステートレスなサービス指向のリクエストを、階層化された環境で処理する非同期で保証された方法が必要な場合。
メッセージキューは、ロードバランシングを実装するのに便利です。たとえば、サーバーは「ジョブ」メッセージ(注文、ステータスメッセージなど)を受信し、すべてのリスニングクライアントに配布します。
メッセージキューは、メッセージが1つのクライアントに確実に配信されることを保証します。
クライアントが異なるコンピュータ上で実行されている場合、負荷が分散され、必要に応じて別のクライアントをメッセージのロードにスローするのは簡単です。クライアントはキューに接続するだけで、メッセージ。
編集:
また、システム間で(非同期に)オブジェクトを移動するのに適しています。それらがプラットフォームに依存しないフォーマット(JSON、XML)でシリアル化されている場合、異なるプログラミング言語間でオブジェクトを交換することもできます。
- 1. RESTfulウェブサービスの経験則
- 2. @propertyアトミシティの経験則は?
- 3. PHPディレクトリの経験則は?
- 4. フォームコントロールの動的作成に関する「経験則」はありますか?
- 5. GAEフロントエンドインスタンスクラスを設定するための経験則
- 6. Zend Frameworkのモジュール数についての経験則
- 7. Pythonの経験的データにべき乗則を適合
- 8. 経験
- 9. データベースインデックスを作成するためのベストプラクティスと「経験則」は何ですか?
- 10. C++ Jobqueue:ワーカースレッドの数について経験則がありますか?
- 11. フレックス:データを再ダウンロードしてキャッシュからロードする場合の経験則
- 12. 多数のパネルとJScrollPaneとsetPreferredSize()を操作するときの経験則
- 13. JavaとRTP関連の経験
- 14. プロトコルバッファに関する経験はありますか?
- 15. ハイブリッドアプリケーションの経験
- 16. SIMDの方が速い場合の経験則は何ですか? (SSE2、AVX)
- 17. MKMapViewローテーションの経験
- 18. ライトニング経験ロールアウトスペシャリストステップ7
- 19. 経験分布関数からサンプルを作る方法
- 20. バブルソートの難しさを経験する
- 21. Vue.jsでnavbarフリッカーを経験する
- 22. mongodbで経験値を保存する
- 23. このバッチコードでバグを経験する
- 24. Rの列を因数分解するときの良い経験則は何ですか?
- 25. マトリクス乗算、sum()、またはforループをMatlabで使用する場合の経験則がありますか?
- 26. SQLサブクエリ - 経験の浅い!
- 27. スマートクライアントソフトウェア工場の経験
- 28. AppFigures.comでの経験は?
- 29. Iceniumの経験とアドバイス
- 30. MAPIとマネージコードの経験?
おそらく、以下のジャーナル記事で提供されている簡単なキューイングのルールも使用できます。http://puslit2.petra.ac.id/ejournal/index.php/civ/article/view/18524 – chugeluang