ページの先頭です。
サイト内の現在位置を表示しています。
  1. ホーム
  2. ソフトウェア
  3. WebOTX
  4. アプリケーションサーバ
  5. 特長/機能
  6. 機能一覧
  7. 再配信メッセージの順序保証機能
ここから本文です。

WebOTX Application Server - 再配信メッセージの順序保証機能

1.再配信メッセージの順序保証機能の概要

JMS標準仕様により、特定のプロデューサ(*1)からコンシューマ(*1)に最初に配信されるすべてのメッセージは、生成された順序でコンシューマに到着することが保証されています。WebOTX JMS はこの要件を満たすだけでなく、さらに送信先単位に再配信時の順序保証要否を設定可能な「再配信メッセージの順序保証」機能を次の特定の条件において提供しています。

  • *(*1) メッセージを送受信する個々のJavaプログラムのうち、メッセージを送信する側をプロデューサ、受信側をコンシューマと呼びます。
  1. 送信先タイプはキューであること
  2. コンシューマのメッセージ受信がトランザクション内で行われていること
  3. 送信先に接続するコンシューマ数は 1 であること

2.再配信順序が保証されない場合の処理の流れ

まず、従来の再配信順序を保証しない場合の処理の流れについて説明します。

従来:再配信順序保証なしの場合従来:再配信順序保証なしの場合

  1. JMSサーバからメッセージ()がまとめて配信される。
  2. メッセージを処理中に、アプリケーション異常などによりトランザクションをロールバック。
  3. メッセージがJMSサーバに差し戻される。
  4. メッセージが再配信されるが、コンシューマにはの配信済みメッセージがあるため、最後尾に位置づけられる。

以上の流れとなり、次のような受注システムを例に考えると、

  • 受注処理の最後に注文履歴をデータベースに挿入する。
  • 受注のキャンセル処理で、最初にデータベース上の注文履歴を確認する。

msg1が受注処理、msg2がその受注のキャンセル処理だった場合、場合によっては、msg1の受注処理より先にmsg2のキャンセル処理のデータベース・アクセスが発生し、注文履歴が検索される可能性があります。その場合、注文履歴はまだ作成されていないため、何らかのエラーが発生することが考えられます。

3.再配信順序が保証される場合の処理の流れ

次に、再配信の順序が保証されている場合の処理の流れを説明します。

再配信順序保証ありの場合再配信順序保証ありの場合

  1. JMSサーバからメッセージが配信される。
  2. メッセージを処理中に、アプリケーション異常などによりトランザクションをロールバック。
  3. メッセージがJMSサーバに差し戻される。
  4. メッセージが再配信されるが、コンシューマに配信済みのメッセージはないため、が確実に次の処理対象になる。

以上の流れとなり、再配信時も順番どおりメッセージが処理されます。先ほどの例のようにmsg1が受注処理、msg2がその受注のキャンセル処理だった場合、msg1が処理されてからmsg2のキャンセル処理が実行されるため、キャンセル処理の際エラーは発生しません。この機能をご利用頂くことで、メッセージの受信と処理順の制御をアプリケーションとして作り込む必要がなくなり、開発工数を削減することができます。

4.設定方法

再配信メッセージの順序保証機能は、次のコマンドで設定可能です。ユーザ名やパスワード、ポート番号は、実際の設定に合わせて指定してください(login、setコマンドはそれぞれ一行で入力してください)。

otxadmin> login --user admin --password xxxxxx --port 6212
otxadmin> set server.jms-service.jms-physical-destination.physical-destination-name.supportOrderedRedelivery=true

(physical-destination-name」は、送信先の定義名です。)

5.更新履歴

ページの先頭へ戻る