18.12.2. メッセージ送信に重複メッセージ検出を使用する
送信メッセージに対して複製メッセージの検出を有効にするには、メッセージで特別なプロパティーを一意の値に設定する必要があります。この値は必要に応じて作成できますが、この値は一意でなければなりません。
ターゲットサーバーがこのメッセージを受信すると、特別なプロパティーが設定されているかどうかを確認します。プロパティーが設定されている場合、ターゲットサーバーはヘッダーのその値で受信したメッセージのメモリーキャッシュをチェックします。サーバーがヘッダーと同じ値を持つメッセージを見つけると、クライアントが送信したメッセージを無視します。
トランザクションでメッセージを送信する場合、そのトランザクションで送信するすべてのメッセージにプロパティーを設定する必要はありません。トランザクションで一度だけ設定する必要があります。サーバーがトランザクションのメッセージの重複メッセージを検出すると、トランザクション全体を無視します。
設定するプロパティーの名前は、
org.hornetq.api.core.HDR_DUPLICATE_DETECTION_ID
の値によって指定されます( _HQ_DUPL_ID
)。このプロパティーの値は、コア API の byte[]
または SimpleString
型です。Java Messaging Service(JMS)クライアントの場合、一意の値を持つ String
タイプである必要があります。一意の ID を簡単に生成する方法は、UUID を生成することです。
下例はコア API のプロパティーを設定する方法を示しています。
下例は JMS クライアントのプロパティーを設定する方法を示しています。
... ClientMessage message = session.createMessage(true); SimpleString myUniqueID = "This is my unique id"; // Can use a UUID for this message.setStringProperty(HDR_DUPLICATE_DETECTION_ID, myUniqueID); ...
...
ClientMessage message = session.createMessage(true);
SimpleString myUniqueID = "This is my unique id"; // Can use a UUID for this
message.setStringProperty(HDR_DUPLICATE_DETECTION_ID, myUniqueID);
...
Copy to clipboardCopied... Message jmsMessage = session.createMessage(); String myUniqueID = "This is my unique id"; // Could use a UUID for this message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID); ...
...
Message jmsMessage = session.createMessage();
String myUniqueID = "This is my unique id"; // Could use a UUID for this
message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID);
...
Copy to clipboardCopied