intra-mart Accel Platform IM-Propagation 仕様書 初版 2014-05-01

3. 概要

目的

IM-Propagation は、データの更新や操作の完了などを通知するための汎用的なトリガとリスナの機構を提供します。
intra-mart Accel Platform では、メニューやジョブなどのマスタデータが変更されたことを示す通知を行う際に IM-Propagation を使用しているため、主にデータ変更のリスナを用意する目的で使用します。
IM-Propagation には、通知を送信・受信するため基本的な実装が用意されており、開発者はマッピング設定といくつかの実装を追加するだけで、目的のトリガ・リスナを用意することができます。
../../_images/overview_1.png
図 IM-Propagation の通知イメージ
送信側(図中の SENDER)が通知内容を IM-Propagation に送信すると、IM-Propagation はマッピング設定(図中の Mapping Table)によって受信側(図中の RECEIVER 1~3)を決定し、通知内容を伝搬します。
したがって、データや通知を受信したい場合は、マッピング設定を追加します。
受信側が複数存在する場合は1つずつ通知内容を送り、全ての受信側に通知が伝搬された後、送信側に戻ります。
データや通知を送信したい場合も同様に、マッピング設定を追加することで実現できます。

処理順序

受信側が複数存在する場合、見つかった順から1つずつ処理されます(順序は不定です)。

blockdiag SENDER IM-Propagation RECEIVER 1 RECEIVER 2 RECEIVER 3 send() onReceive() ReceiveResult onReceive() ReceiveResult onReceive() ReceiveResult SendResult

図 処理シーケンス
複数のスレッドから、同一の受信側へデータが伝搬される場合、1スレッドずつ処理されます。
これにより、受信側の処理はスレッドセーフが保証されます。
../../_images/overview_2.png
図 マルチスレッドでの動作

制限事項

  • IM-Propagation を使用したデータの伝搬は、データを送信したサーバ内で処理が実行されます。
    アプリケーションサーバが複数台構成の場合、他サーバへのデータの伝搬はできません。
  • IM-Propagation の処理全体でロックする機能は提供されていません。
    ロックを必要とする場合は、別途アプリケーションロックを使用します。