gpt4 book ai didi

java - 通配符路由在 ActiveMQ Artemis 中不起作用

转载 作者:行者123 更新时间:2023-12-02 09:32:55 26 4
gpt4 key购买 nike

我使用 Apache Artemis 作为消息总线,并使用 JMS 来监听消息并将消息发送到消息总线。我有一个用例,我想监听与模式匹配的所有队列(例如主题以 xxxx 开头)。根据我的探索,我们可以使用通配符路由来做到这一点。 http://activemq.apache.org/wildcards.html

我已将以下内容放入我的broker.xml

<wildcard-addresses>
<routing-enabled>true</routing-enabled>
</wildcard-addresses>

我使用以下代码将消息发送到队列:

@Component
@EnableJms
public class Producer {
@Autowired
JmsTemplate jmsTemplate;

@Value("address.client1")
String destinationQueue;

public void send(String msg){
jmsTemplate.convertAndSend(destinationQueue, msg);
}

}

下面是我的监听器,它应该监听以地址开头的所有队列。

@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 通配 rune 档为 here .

您的消费者的问题是您使用了错误的语法。它正在使用address.>。您可以更改 Artemis 中的通配符语法配置,例如:

<wildcard-addresses>
<routing-enabled>true</routing-enabled>
<any-words>&gt;</any-words>
</wildcard-addresses>

或者您可以使用默认 Artemis 配置中功能等效的语法,即 address.#

关于java - 通配符路由在 ActiveMQ Artemis 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57802860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com