MultiCastモデルを使用した場合のアプリケーションとチャネルの動作を以下に示します。
Point-To-Pointモデルを使用した場合は、2のアプリケーションの処理は必要ありません。
サプライヤは、イベントデータをpushします。
コンシューマは、コンシューマに接続するイベントチャネルのオブジェクトリファレンスが保存されているかを確認します。保存方法には、ファイルまたはネーミングサービスへ保存するなどの方法があります。
[保存されている場合]
コンシューマに接続するイベントチャネルのオブジェクトリファレンスを取り出します。コンシューマに接続するイベントチャネルのオブジェクトリファレンスが不要である場合は、チャネルに対してdisconnectを発行し、チャネルが保存しているオブジェクトリファレンスを削除します。
なお、disconnectを発行すると、コンシューマが保存しているオブジェクトは無効となるため、保存しているオブジェクトを削除するようにしてください。
[保存されていない場合]
obtain/connectを発行して、チャネルからコンシューマに接続するイベントチャネルのオブジェクトリファレンスを獲得します。獲得したオブジェクトリファレンスを保存します。
コンシューマは、2.で獲得したオブジェクトリファレンスを使用してpullを発行します。
上記のシーケンスの[保存されている場合]のように、コンシューマに接続するイベントチャネルのオブジェクトリファレンスをコンシューマで不揮発な媒体に保存しておくことにより、コンシューマが未起動状態であってもイベントデータを確実に取得することが可能になります。
イベントデータの取得時にシステム例外COMM_FAILURE、およびマイナーコード0x464a0109(不当なデータを受信しました。)が返った場合、システムダウンなどによりコネクションが強制切断された可能性があります。この場合、コンシューマを再起動することでイベントデータを取得することが可能となります。
なお、チャネルが再起動中の場合、例外情報 NO_IMPLEMENT、マイナーコード0x464a0880(サーバアプリケーションが未起動です。)が返ります。この場合、しばらく待ってから、コンシューマを再起動してください。