Mixedモデルは、サプライヤ側をPushモデル、コンシューマ側をPullモデルとした通信モデルです。サプライヤもコンシューマも待ち合わせることなく、その中間にあるイベントチャネルが一時的にイベントデータを蓄積し、受け渡します。
本モデルは、サプライヤとコンシューマが互いの動作状態に関係なく、イベント通信を行う場合に使用され、本モデルのイベント通信により非同期のアプリケーション間通信を実現できます。
また、Pushモデルと同様に、同時に複数のコンシューマに対してメッセージを送信したり、1台のコンシューマが複数のサプライヤからメッセージを受信したりする場合に有効です。一定時間ごとにコンシューマがイベントチャネルに蓄積されているデータを受け取る場合にも有効です。
Mixedモデルの概要を以下に示します。
サプライヤからの送信には、pushメソッドを使用します。コンシューマからの取り出しは、pullメソッドまたはtry_pullメソッドを使用します。
コンシューマは、イベントデータを受け取るため、イベントチャネルに対して接続します。
サプライヤは、イベントデータをイベントチャネルに送信します。
イベントチャネルでは、イベントデータを一時的に蓄積します。
イベントチャネルに接続しているコンシューマは、イベントチャネルに蓄積されているイベントデータを取り出す要求を出します。
イベントチャネルは、蓄積されているイベントデータを取り出して送信し、コンシューマが受信します。
コンシューマは、イベントチャネルとの接続後、サプライヤから送信されたデータを取得できます。
ポイント
コンシューマ、サプライヤ側のマシン環境でサーバアプリケーションを運用できない場合は、Mixedモデルを使用します。