4.12.2.2. スケジュールされたメッセージ
スケジュールされたメッセージがキューに送信されると、メッセージは通常のメッセージのようにキューの末尾に即座に追加されません。代わりに、ブローカーはスケジュールされたメッセージを中間バッファーに保持し、メッセージの詳細に従ってキューのヘッドへ配信するようにメッセージをスケジュールします。ただし、スケジュールされたメッセージはキューのメッセージ数に反映されます。再配信メッセージの場合のように、この動作により、ブローカーがリングキューのサイズを強制していないことを確認できます。たとえば、以下のシナリオについて考えてみましょう。
12:00 では、プロデューサーはメッセージ
Aをring-size="3"で設定されたリングキューに送信します。メッセージは 12:05 に対してスケジュールされます。この時点で、
messageCount=1およびscheduledCount=1になります。12:01 では、プロデューサーはメッセージ
Bを同じリングキューに送信します。現在、
messageCount=2およびscheduledCount=1。12:02 では、プロデューサーはメッセージ
Cを同じリングキューに送信します。現在、
messageCount=3およびscheduledCount=1。12:03 時、プロデューサーはメッセージ
Dを同じリングキューに送信します。現在、
messageCount=4およびscheduledCount=1。キューのメッセージ数は
4で、設定されたリングサイズから3よりも大きい ようになりました。ただし、スケジュールされたメッセージはキューでは技術的ではありません (つまり、ブローカーにあり、キューに配置するようにスケジュールされています)。スケジュールされた配信時間 12:05 にすると、ブローカーはメッセージをキューのヘッドに配置します。ただし、リングキューが設定サイズをすでに到達しているため、スケジュールされたメッセージAはすぐに削除されます。