非同期メッセージングの動きを同期メッセージングと対比して整理します。
メッセージングとは
あるアプリケーションから別のアプリケーションへ情報を送る時の送り方です。 送る情報を「メッセージ」と呼びます。 同期メッセージングと非同期メッセージングがあります。
アプリケーションA メッセージ アプリケーションB
動作の対比
応答を待つか?
同期メッセージングと非同期メッセージングではメッセージを送った後のアプリケーションの動きが違います。
メッセージを送ったあと
同期メッセージング | 応答を待つ |
非同期メッセージング | 応答を待たずに次の処理を始める |
例えば、電話では相手の応答を待ちますが、メールでは送信したら次の作業に取り掛かります。
メッセージの結果
メッセージの「結果」の受け取り方にも、同期メッセージングと非同期メッセージングでは違いがあります。
メッセージの応答に結果が
同期メッセージング | 含まれます |
非同期メッセージング | 含まれません |
非同期メッセージングでメッセージの結果が必要な場合は、アプリケーションAからアプリケーションBへ結果を取得するための同期メッセージを送るか、アプリケーションBから非同期メッセージで結果を送ります*1。
例えば、通信販売では申し込みと同時に買えたことがわかりますが、懸賞応募では「当選者の発表は賞品の発送をもって代えさせていただきます」。
メッセージを処理するタイミング
アプリケーションAからアプリケーションBへ送るメッセージが複数の場合、同期メッセージングと非同期メッセージングでメッセージを処理するタイミング違います。
アプリケーションAとアプリケーションBがメッセージを処理をするタイミングが
同期メッセージング | 一致(同期)します。 |
非同期メッセージング | 一致しません(非同期)。 |
非同期メッセージングでは、アプリケーションAは結果を待たずにメッセージを次々と投げるので、メッセージを処理をするタイミングは一致しません。
例えば、受注処理は受け付け毎に随時行いますが、発送作業は定時に一括して行います。
対比のまとめ
応答 | 結果 | 処理のタイミング | |
---|---|---|---|
同期メッセージング | 待つ | メッセージの応答で取得 | アプリケーション間で一致 |
非同期メッセージング | 待たない | 新規のメッセージで取得 | アプリケーション間で一致しない |
参考図書
「1章 メッセージングパラダイムの理解」で同期メッセージと非同期メッセージの違いを解説しています。
*1:この場合はアプリケーションBも結果の送信先を知っている1対1の通信になります。これをPoint-To-Pointメッセージングモデルと呼びます。例えばチャットアプリケーションはアプリケーションとしては同期メッセージングですが、ユーザまで含めたメッセージのやり取りのシステムとして見るとPoint-To-Point非同期メッセージングモデルです