2.3.4 メッセージの削除

Cosminexus RMは,アプリケーションによるメッセージの取り出しなどで不要になったキュー内のメッセージを削除します。

<この項の構成>
(1) メッセージの削除方法
(2) キューの種類と利用できる削除方法

(1) メッセージの削除方法

メッセージを削除する方法には,遅延削除と即時削除の二つ方法があります。それぞれの方法について説明します。

(a) 遅延削除

遅延削除は,メッセージが不要になった時点で削除せず配信済みの状態にしておき,RMSweepTimerIntervalプロパティ指定値の間隔で一括に削除する方法です。遅延削除はメッセージの取り出しの延長でメッセージを削除しないため,即時削除よりもスループットが優れる場合があります。

なお,非永続リソースアダプタの場合,遅延削除は利用できません。

遅延削除を利用したメッセージの削除の概要を,次の図に示します。

図2-16 遅延削除を利用したメッセージの削除の概要

[図データ]

(b) 即時削除

即時削除は,メッセージが不要になった時点で削除する方法です。そのため,遅延削除よりも一時的に使用するメモリの量を削減できます。即時削除は,アプリケーションによるメッセージの取り出しでのコミット時や,hrmdelmsgコマンド実行時のタイミングで実施されます。

ローカルキューまたはデッドメッセージキュー内のメッセージに即時削除を利用する場合,RMDeleteMessageImmediatelyプロパティにtrueを指定します。

即時削除を利用したメッセージの削除の概要を,次の図に示します。

図2-17 即時削除を利用したメッセージの削除の概要

[図データ]

(2) キューの種類と利用できる削除方法

キューの種類によって利用できる削除方法が異なります。

キューの種類と利用できる削除方法について,次の表に示します。

表2-2 キューの種類と利用できる削除方法

項番キューの種類遅延削除即時削除
1ローカルキュー※1※2
2転送キュー×
3受信用共用キュー×
4送信用共用キュー
5デッドメッセージキュー※1
(凡例)
○:利用できます。
×:利用できません。
-:対象外です。
注※1
RMDeleteMessageImmediatelyプロパティにtrueを指定した場合だけ即時削除を行います。
注※2
キュー間転送では,メッセージの順序を保証するため,アプリケーションによって受信されたメッセージでも削除できないことがあります。そのため,キュー間転送で受信したメッセージは即時削除を行いません。