Java 通配符路由在ActiveMQ Artemis中不起作用
我使用ApacheArtemis作为消息总线,使用JMS侦听消息并将消息发送到消息总线。我有一个用例,在这个用例中,我想要监听与模式匹配的所有队列(例如,主题以xxxx开头)。根据我所探索的,我们可以使用通配符路由来实现这一点。 我已经在broker.xml中添加了以下内容Java 通配符路由在ActiveMQ Artemis中不起作用,java,spring,jms,activemq-artemis,Java,Spring,Jms,Activemq Artemis,我使用ApacheArtemis作为消息总线,使用JMS侦听消息并将消息发送到消息总线。我有一个用例,在这个用例中,我想要监听与模式匹配的所有队列(例如,主题以xxxx开头)。根据我所探索的,我们可以使用通配符路由来实现这一点。 我已经在broker.xml中添加了以下内容 <wildcard-addresses> <routing-enabled>true</routing-enabled> </wildcard-addresses>
<wildcard-addresses>
<routing-enabled>true</routing-enabled>
</wildcard-addresses>
下面是我的侦听器,它应该侦听以地址开头的所有队列。
@Component
public class Consumer {
@JmsListener(destination = "address.>")
public void receive(Message message){
if(message.getPayload() instanceof String){
System.out.println("Recieved Message: " + message.getPayload().toString());
}else {
System.err.println("Message Type Unkown !");
}
}
}
但是我无法接收我们从发送方发送到接收方代码的消息。有人能帮我吗?您在问题中链接的文档是针对ActiveMQ 5.x的,而不是针对ActiveMQ Artemis的。通配符的ActiveMQ Artemis文档是 消费者的问题是使用了错误的语法。它正在使用
地址。>
。您可以更改Artemis中的通配符语法配置,例如:
真的
或者您可以使用默认Artemis配置中功能等效的语法,即
地址。35;
您已经禁用了路由,并且您想知道为什么它不工作<代码>错误对不起,我在问题中犯了错误,它是真的
@Component
public class Consumer {
@JmsListener(destination = "address.>")
public void receive(Message message){
if(message.getPayload() instanceof String){
System.out.println("Recieved Message: " + message.getPayload().toString());
}else {
System.err.println("Message Type Unkown !");
}
}
}