繁体   English   中英

originalDestination 能否用作死信队列消费者的选择器?

[英]Can originalDestination be used as a selector for a dead-letter queue consumer?

我正在尝试使用共享死信队列,并且只想使用我的应用程序创建的消息。 我试图在消费者的 originalDestination 属性上添加一个选择器,但它不起作用。 有什么我想念的吗?

@JmsListener(destination = "${dlq}", selector = "originalDestination = 'Consumer.original.VirtualTopic.original'")
    public void onMessageReceived(Message message) {
        log.info(message.getOriginalDestination().toString());
        log.info(message.toString());
    }

JMSDestination 的属性表达式选择器将首先查看 originalDestination 字段,以便它可以工作。 作为字符串的原始目标将具有队列/主题类型前缀。

这应该工作:

@JmsListener(destination = "${dlq}", selector = "JMSDestination = 'queue://Consumer.original.VirtualTopic.original'")

请参阅: https ://github.com/apache/activemq/blob/master/activemq-client/src/main/java/org/apache/activemq/filter/PropertyExpression.java#L48

由于原始目标不是 JMS 保留属性(如 JMSReplyTo 等),也不是可通过标准消息 getObjectProperty 类型方法访问的消息属性,因此选择器无法处理它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM