Show Table of Contents
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); ...

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.