最近、同僚がこう言いました。
メッセージの生成と消費に異なるセッションを使用する場合、メッセージが生成された順序で配信されるという保証はありません。
JMS が一般的にメッセージ配信順序を保証しないことはわかっていますが、この「複数のセッション」という角度は私にとって初めてのことです。これに真実はありますか?
JMS 仕様(セクション 4.4.10 メッセージの順序)によると、セッションから宛先に送信されるメッセージの順序のみが保証されます (ただし、いくつかの注意事項があります)。
これの意味は:
1 つのセッションから同じ宛先 に送信される 2 つのメッセージの順序のみが定義されています。
特定の JMS 実装では、通常、アイテムが生成された (グローバルな) 順序でアイテムが配信される可能性があることに注意してください。しかし、これは基本的に「ベストエフォート」であるため、決してこれに頼るべきではありません。できない場合でも、仕様の範囲内であり、アプリケーションはそれを処理できる必要があります。
tl;drはい、あなたの同僚は正しいです。1 つのセッション/1 つの宛先のケースでの保証でさえ、特に異なるメッセージ オプションが関係している場合は、それほど強力ではないことに注意してください (詳細については、リンクされた PDF を参照してください)。
JMS は「非同期」であるため、メッセージの配信順序が保証されることはありません。