Menu Close
Settings Close

Language and Page Formatting Options

20.8.2. 对消息发送使用重复消息检测

要启用重复消息检测,您需要将消息上的一个特殊属性设置为唯一的值。您可以随意创建这个值,但它必须是唯一的。
当目标服务器接收到这个消息时,它会检查这个特殊属性是否已被设置。如果这个属性已设置,目标服务器将根据头部信息检查其内存缓存里的消息。如果服务器找到具有任何相同头部信息的消息,它将忽略这些客户发送的消息。
如果您发送事务里的消息,您不需要为每条消息设置属性;您只需要在事务里设置一次就可以了。如果服务器检测到事务里有重复的消息,它会忽略整个事务。
您设置的属性的名称是由 org.hornetq.api.core.HDR_DUPLICATE_DETECTION_ID 的值指定的,它是 _HQ_DUPL_ID。对于 Core API,这个属性的值的类型可以是 byte[]SimpleString。对于 JMS 客户,它的类型必须是 String 且指定唯一的值。UUID 是生成唯一 ID 的简单途径。
下面的例子展示了如何为 Core API 设置这个属性:
...     

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);

...

下面的例子展示了如何为 JMS 客户设置这个属性:
...     

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);

...