7.19.2 メッセージ処理の優先順位についての注意事項
CJMSプロバイダのメッセージ送信では,優先順位の高いメッセージが最初に実行されることが保証されません。例えば,優先順位を1,2,3と設定した「メッセージ1」「メッセージ2」および「メッセージ3」というの三つのメッセージをプロデューサーから送信した場合に,コンシューマーでは「メッセージ1」「メッセージ3」「メッセージ2」のように異なる順番で処理が実行されることがあります。
優先順位と処理順の相違は,次のような要因で発生します。
-
プロデューサーが先に優先順位の低いメッセージを送信したあとで,優先順位が高いメッセージを送信した場合,あとから送ったメッセージが届く前にコンシューマーではすでに優先順位の低いメッセージを受信し,処理を開始していることがあります。
-
コンシューマーが優先順位の高いメッセージを受信する前に,そのメッセージの有効期限が過ぎた場合,優先順位の高いメッセージの処理は実行されません。
-
プロデューサーが優先順位に沿ってメッセージを送信した場合も,内部処理の遅延などによって,コンシューマーに送信される順序が変わることがあります。
-
優先順位が高いメッセージが永続化メッセージでない場合,CJMSPブローカーに障害が発生すると,そのメッセージは失われます。この場合,CJMSPブローカーが再起動したあとでは,優先度が低い永続化メッセージの処理だけが実行されます。