プライオリティとは、メッセージ送受信の優先度を意味します。メッセージのプライオリティを設定することにより、緊急のメッセージを優先的に処理させることができます。
プライオリティは各非同期メッセージ基盤により複数の段階があり、メッセージ送信時にアプリケーションが指定します。
プラリオリティ値は非同期メッセージ基盤により段階数が異なるため、プライオリティ値が相違するサーバ間でメッセージ交換する場合は、イベントチャネル連携サービスが表11.5 非同期メッセージ基盤のプライオリティの対応関係に示すようにプライオリティ値を変換しています。
なお、グローバルサーバと通信する場合はプライオリティ値の変換は行われません。グローバルサーバでは、WindowsサーバやUNIXサーバ、Linuxサーバからメッセージを受信した順番に受信キューにメッセージを格納します。WindowsサーバやUNIXサーバ、Linuxサーバでは、グローバルサーバからメッセージを受信すると受信キューのデフォルトのプライオリティ値を指定してメッセージを受信キューに格納します。
送信側の非同期メッセージ基盤 | 受信側の非同期メッセージ基盤 | ||||
---|---|---|---|---|---|
ノーティフィケーションサービス | JMS |
|
| ||
ノーティフィケーションサービス | 3(高) | 3 | 9 | 1 | 1 |
2 | 2 | 7 | 2 | ||
1 | 1 | 5 | 3 | 2 | |
0 | 0 | 4 | 4 | ||
-1 | -1 | 3 | 5 | ||
-2 | -2 | 2 | 6 | 3 | |
-3(低) | -3 | 0 | 7 | ||
JMS | 9(高) | 3 | 9 | 1 | 1 |
8 | 3 | 8 | |||
7 | 2 | 7 | 2 | ||
6 | 2 | 6 | |||
5 | 1 | 5 | 3 | 2 | |
4 | 0 | 4 | 4 | ||
3 | -1 | 3 | 5 | ||
2 | -2 | 2 | 6 | 3 | |
1 | -3 | 1 | 7 | ||
0(低) | -3 | 0 | |||
| 1(高) | 3 | 9 | 1 | 1 |
2 | 2 | 7 | 2 | 2 | |
3 | 1 | 5 | 3 | 3 | |
4 | 0 | 4 | 4 | ||
5 | -1 | 3 | 5 | ||
6 | -2 | 2 | 6 | ||
7(低) | -3 | 0 | 7 | ||
| 1(高) | 3 | 9 | 1 | 1 |
2 | 0 | 4 | 2 | 2 | |
3(低) | -3 | 0 | 3 | 3 |
プライオリティ機能を使用する場合、送信側のサーバの非同期メッセージ基盤により通信モデルやメッセージの送信順番が異なります。以下に送信側のサーバで各非同期メッセージ基盤を使用する場合のプライオリティの使用方法を説明します。
ノーティフィケーションサービスでプライオリティを使用する
送信側のサーバの非同期メッセージ基盤がノーティフィケーションサービスの場合、送信側のイベントチャネルのQos(OrderPolicy)をFifoOrderにするため、イベントデータは送信側のサーバでサプライヤが格納した順に受信側のサーバへ送信されます。
受信側のサーバでは、非同期メッセージ基盤がノーティフィケーションサービスの場合は、コンシューマがイベントデータを受信する際に、当該のイベントチャネルのQos(OrderPolicy)をPriorityOrderにしてからイベントデータを受信することでプライオリティが有効になります。
なお、受信側のサーバが、その他の非同期メッセージ基盤の場合は、プライオリティが有効になるため、先に送信された低レベルのプライオリティのイベントデータよりも後から送信された高レベルのプライオリティのイベントデータを受信アプリケーションが優先して処理できます。
ノーティフィケーションサービスを使用したプライオリティの取り扱い方法を図11.18 ノーティフィケーションサービスを使用したプライオリティの取り扱い方法に示します。
図11.18 ノーティフィケーションサービスを使用したプライオリティの取り扱い方法
[図の説明]
1) サプライヤがイベントチャネルに格納されているイベントデータより高レベルのプライオリティ[3]のイベントデータを格納します。
2) イベントチャネル連携サービスは、当該イベントチャネルのイベントデータをプライオリティの高低に関わらず格納された順序で受信側のサーバへ送信します。
3) 送信側のイベントチャネルに格納された高レベルのプライオリティ[3]のイベントデータが受信側のサーバに送信されます。サプライヤが、イベントチャネルのQos(OrderPolicy)をPriorityOrderにしてからイベントデータを受信することで高レベルのプライオリティ[3]のイベントデータは、先に受信側のサーバに送信された低レベルのプライオリティ[1]のイベントデータよりも優先して処理されます。
JMSでプライオリティを使用する
送信側のサーバの非同期メッセージ基盤がJMSの場合、送信側のJMSのキューはプライオリティ毎に作成し、集信型のメッセージングモデルを使用することでプライオリティ機能を使用します。
送信側のJMSのキューに格納されたメッセージは、JMSのキュー単位に受信側のサーバに送信され、受信側のサーバでプライオリティが有効になり、先に送信された低レベルのプライオリティのメッセージよりも後から送信された高レベルのプライオリティのメッセージを受信アプリケーションが優先して処理できます。
JMSを使用したプライオリティの取り扱い方法を図11.19 JMSを使用したプライオリティの取り扱い方法に示します。
図11.19 JMSを使用したプライオリティの取り扱い方法
[図の説明]
1) SenderまたはPublisherが、低レベルのプライオリティ[1]のメッセージを送信側のサーバのJMSキュー1に格納します。
2) 低レベルのプライオリティ[1]のメッセージが、最初に受信側のサーバに送信されます。
3) SenderまたはPublisherが、高レベルのプライオリティ[9]のメッセージを送信サーバのJMSキュー2に格納します。
4) 高レベルのプライオリティ[9]のメッセージが、受信側のサーバへ送信されます。高レベルのプライオリティのメッセージ[9]は、先に受信側のサーバに送信された低レベルのプライオリティ[1]のメッセージよりも優先して処理されます。
MQDでプライオリティを使用する
送信側のサーバの非同期メッセージ基盤がMQDの場合、送信側のサーバに格納されている高レベルのプライオリティのメッセージから受信側のサーバへ送信されます。
受信側のサーバでは、送信側で指定したプライオリティが有効になり、高レベルのプライオリティのメッセージを受信アプリケーションが優先して処理できます。
MQDを使用したプライオリティの取り扱い方法を図11.20 MQDを使用したプライオリティの使用方法に示します。
図11.20 MQDを使用したプライオリティの使用方法
[図の説明]
1) 送信アプリケーションが、送信メッセージキューに格納されているメッセージよりも高レベルのプライオリティ[1]のメッセージを格納します。
2) 最初に格納されている低レベルのプライオリティ[3]のメッセージよりも、後から格納した高レベルのプライオリティ[1]のメッセージが優先して受信側のサーバに送信されます。
3) 低レベルのプライオリティ[3]のメッセージは、高レベルのプライオリティ[1]のメッセージが送信された後に受信サーバに送信されます。受信側のサーバのアプリケーションは、高レベルのプライオリティ[1]のメッセージから処理することができます。