我正在尝试从共享死信队列中使用,而只想使用由我的应用程序创建的消息。我试图在使用者的originalDestination属性上添加一个选择器,但是它不起作用。我有什么想念的吗?
@JmsListener(destination = "${dlq}", selector = "originalDestination = 'Consumer.original.VirtualTopic.original'")
public void onMessageReceived(Message message) {
log.info(message.getOriginalDestination().toString());
log.info(message.toString());
}
答案 0 :(得分:0)
由于原始目的地不是JMS保留属性(如JMSReplyTo等),也不是可通过标准message getObjectProperty类型方法访问的message属性,因此选择器将无法使用该属性。
答案 1 :(得分:0)
JMSDestination的属性表达式选择器将首先查看originalDestination字段,以便它可以工作。 原始目的地为字符串,将具有队列/主题类型前缀。
这应该有效:
@JmsListener(destination = "${dlq}", selector = "JMSDestination = 'queue://Consumer.original.VirtualTopic.original'")