7.4. 使用重复消息检测
AMQ Broker 包括自动重复消息检测,它过滤出它收到的任何重复消息,因此您不必对自己的重复检测逻辑进行编码。
要启用重复消息检测,请为消息属性 _AMQ_DUPL_ID 提供唯一值。当代理收到消息时,它会检查 _AMQ_DUPL_ID 是否具有值。如果这样做,代理会在其内存缓存中检查,以查看它是否已收到具有该值的消息。如果找到具有相同值的消息,则忽略传入的信息。
如果您要在事务中发送消息,则不必为事务中的每个信息设置 _AMQ_DUPL_ID,但只能在其中之一设置。如果代理检测到事务中任何消息的重复消息,它会忽略整个事务。
设置重复的 ID 消息属性
以下示例演示了如何使用 AMQ Core Protocol JMS 设置重复检测属性。请注意,为了方便,客户端使用恒定的 org.apache.activemq.artemis.api.core.Message.HDR_DUPLICATE_DETECTION_ID 的值作为重复 ID 属性的名称,_AMQ_DUPL_ID。
流程
将 _AMQ_DUPL_ID 的值设置为唯一字符串值。
Message jmsMessage = session.createMessage();
String myUniqueID = "This is my unique id";
message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID);