7.19 Cosminexus JMSプロバイダ使用時の注意事項

この節では,Cosminexus JMSプロバイダ使用時の注意事項について説明します。

<この節の構成>
(1) デフォルトの設定でのCosminexus JMSプロバイダの動作
(2) メッセージ処理の優先順位についての注意事項
(3) 有効期限が過ぎたメッセージの扱い
(4) メッセージプロパティの順序性
(5) メッセージプロパティでのバイトメッセージの扱い

(1) デフォルトの設定でのCosminexus JMSプロバイダの動作

デフォルトの設定では,Cosminexus JMSプロバイダは次のように動作します。

(2) メッセージ処理の優先順位についての注意事項

Cosminexus JMSプロバイダのメッセージ送信では,優先順位の高いメッセージが最初に実行されることが保証されません。例えば,優先順位を1,2,3と設定した「メッセージ1」「メッセージ2」および「メッセージ3」というの三つのメッセージをプロデューサーから送信した場合に,コンシューマーでは「メッセージ1」「メッセージ3」「メッセージ2」のように異なる順番で処理が実行されることがあります。

優先順位と処理順の相違は,次のような要因で発生します。

(3) 有効期限が過ぎたメッセージの扱い

送信先があるマシンのシステム時間を変更した場合,クライアントは期限切れのメッセージを受信することがあります。

メッセージの有効期限は,JMSExpirationヘッダーフィールドにメッセージを送信したメソッドによって設定されます。もし,誤ってシステムの時間設定が変更されていた場合,有効期限が過ぎたメッセージがコンシューマーに送信されるおそれがあります。

(4) メッセージプロパティの順序性

メッセージプロパティの処理順序は保証されません。

メッセージプロパティは,順序性を維持した構造で管理されていません。このため,例えば,「プロパティ1」「プロパティ2」「プロパティ3」というプロパティがある場合に,この順序で送信先に送信しても,同じ順序で処理されるとは限りません。ただし,プロパティとその値は,送信前と受信時で変わりません。

(5) メッセージプロパティでのバイトメッセージの扱い

メッセージプロパティでは,バイトメッセージを使用しないでください。

バイトメッセージでは,すべてのデータ型のデータを読み出すことができます。例えば,long型の値を含むメッセージをshort型のメソッドで呼び出して処理した場合,意味的には不正な値ですが,最初の2バイトの読み出しには成功してしまいます。これは,ほかのメッセージのデータ型では禁止されている処理です。

Cosminexus JMSプロバイダでは,データのデータ型を保持し,正しい変換規則の適用に対応するよう,データを管理しています。