Java ActiveMQ Artemis中的消息复制在消息被使用后仍然被拒绝

Java ActiveMQ Artemis中的消息复制在消息被使用后仍然被拒绝,java,activemq-artemis,Java,Activemq Artemis,我使用的是ActiveMQ Artemis 2.10,在我的用例中,我希望避免队列中出现重复的消息,因此在向队列发送消息之前,我设置了属性Message.HDR\u DUPLICATE\u DETECTION\u ID: ClientConsumer consumer = session.createConsumer(queueName); ClientMessage message = consumer.receive(); message.putStringProperty(Message.

我使用的是ActiveMQ Artemis 2.10,在我的用例中,我希望避免队列中出现重复的消息,因此在向队列发送消息之前,我设置了属性Message.HDR\u DUPLICATE\u DETECTION\u ID:

ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage message = consumer.receive();
message.putStringProperty(Message.HDR_DUPLICATE_DETECTION_ID, hashVal);
但问题是,即使在使用此消息之后,如果我尝试发送另一条具有相同hashVal值的消息,新消息也会被拒绝。即使队列中没有其他具有相同hashVal值的消息


是否有一种方法可以将重复检测设置为仅当队列中存在具有相同HDR\u duplicate\u detection\u ID的未使用消息时才拒绝消息?

您看到的行为是预期的。重复检测ID对于每条消息都应该是唯一的。如果您对多条消息使用同一ID,则如果未从代理上的重复ID缓存中取出,则可能会拒绝该消息。ID将根据缓存的大小从缓存中逐出。一旦缓存达到其配置大小,它将在添加新ID时开始删除最旧的ID