7.4. 複製メッセージ検出の使用

AMQ Broker には、受信する重複メッセージを除外する自動複製メッセージ検出が含まれています。そのため、独自の複製検出ロジックをコーディングする必要はありません。

複製メッセージの検出を有効にするには、メッセージプロパティー _AMQ_DUPL_ID に一意の値を指定します。ブローカーがメッセージを受信すると、_AMQ_DUPL_ID の値があるかどうかを確認します。ある場合、ブローカーはメモリーキャッシュを確認し、その値のあるメッセージをすでに受信したかどうかを確認します。同じ値があるメッセージが見つかると、受信メッセージは無視されます。

トランザクションでメッセージを送信する場合、トランザクションのすべてのメッセージに _AMQ_DUPL_ID を設定する必要はなく、1 つのメッセージのみに設定します。ブローカーがトランザクションにあるメッセージの重複メッセージを検出した場合、トランザクション全体を無視します。

重複 ID メッセージプロパティーの設定

以下の例は、AMQ Core Protocol JMS を使用して重複検出プロパティーを設定する方法を示しています。便宜上、クライアントは、重複 ID プロパティー _AMQ_DUPL_ID の名前に定数 org.apache.activemq.artemis.api.core.Message.HDR_DUPLICATE_DETECTION_ID の値を使用することに注意してください。

手順

_AMQ_DUPL_ID の値を一意の文字列値に設定します。

Message jmsMessage = session.createMessage();
String myUniqueID = "This is my unique id";
message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID);