Apache ActiveMQ 5.3 - 如何配置队列以拒绝重复的消息?

Yos*_*ale 11 activemq-classic

我需要队列来强制执行不重复的策略.可能吗?如果是这样,怎么样?(我一直在谷歌搜索几个小时......)

编辑:

ActiveMQSession实现有以下几行:

        // transform to our own message format here
            ActiveMQMessage msg = ActiveMQMessageTransformation.transformMessage(message, connection);

        // Set the message id.
        if (msg == message) {
            msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(), sequenceNumber));
        } else {
            msg.setMessageId(new MessageId(producer.getProducerInfo().getProducerId(), sequenceNumber));
            message.setJMSMessageID(msg.getMessageId().toString());
        }
Run Code Online (Sandbox Code Playgroud)

ActiveMQMessageTransformation是可插入的(您可以设置它),但以下if语句是一个相当无可争议的.

任何想法,除了改变他们的代码?

Rob*_*ies 1

ActiveMQ 内置了重复消息检测 - 如何定义重复消息?如果重复项具有相同的 messageId - 则应将其丢弃

  • @Rob但是在检测重复项时如何让 ActiveMQ 遵守标头中定义明确的属性?如何让 ActiveMQ 丢弃 MY_MSG_ID=123 的传入消息,只要队列中已经存在另一条 123 的消息,无论 JMSMessageID 是什么? (2认同)