首先,让我解释一下我使用经典的ActiveMQ所做的尝试,它非常适合我的需求:
@JmsListener(destination = "queue.>")
public void receiveMessage(Event event) {
//Process the event message
}
我观察到的我不能配置Artemis来做同样的事情是:
queue.test1.event
中放入100条消息,然后才在queue.test2.event
中添加100条消息时,如果我启动通配符侦听器,它将开始公平地从两个队列中读取消息,尽管queue.test2.event
队列中的所有消息基本上都添加在queue.test1.event
.我需要功能#2和#3。第一个只是观察,我认为这是我在阿尔忒弥斯的问题的根本原因。
现在,当我转移到Artemis时发生的事情是:通配符模式有点不同,但我做了相同的场景。监听器如下所示:
@JmsListener(destination = "queue.#")
public void receiveMessage(Event event) {
//Process the event message
}
如您所见,通配符模板更改为queue.#
,以便能够读取所有这些队列。
我的Artemis队列在web控制台中如下所示:Artemis中的队列,
这给我带来了一个巨大的问题。虽然我仍然希望它尊重每个队列中的FIFO,但我也希望它开始使用来自其他队列的消息。因为,如果一个客户正在处理巨大的任务,它不应该阻止其他人继续他们的任务。
PS1:我限制两个测试中的监听器每次只能使用一条消息,以便能够正确地测试它。
PS2:如果你想知道为什么我不使用经典的ActiveMQ,如果它完全符合我的需要,答案是:Apache将使Artemis在未来成为它的主要版本(一旦它达到一定的成熟度),我希望与路线图保持一致。引用自其网站:
PS4:我对解决方案和安装都使用默认配置。
简单地说,ActiveMQ Artemis不支持通配符使用者。它只支持具有相似但不同语义的通配符地址(正如您这个问题的答案中所解释的那样)。
您可以打开一个问题来请求实现此特性。
现在当我启动基于spring的应用程序时。我在调试器中看到,我的侦听器方法注册了,但是Spring不连接到ActiveMQ队列,我可以通过查看ActiveMQ web控制台轻松地看到这一点。此外,我没有看到任何来自spring的日志输出,而JMS的东西是这样做的。 我错过什么了吗?从这里走下去最好的路是什么?当然,我也测试了从ActiveMQ的web控制台中发送消息,但是如果没有客户端连接,就没有
我有一个用例,我想在一个应用程序中创建多个监听器(6)。我想订阅多个目的地(6个主题)。所有订阅都是持久的。我为每个监听器使用单独的默认消息监听器容器(DMLC),并使用不同的客户端id,但我对如何使用连接工厂感到困惑。 我是否应该使用单个 ActiveMQ 池连接工厂,最大连接数指定为 6。或者我应该为每个侦听器使用不同的池连接工厂吗? 使用具有最大连接池连接工厂对于持久用户有什么危害吗? 源代
ActiveMQ Artemis中是否有与ActiveMQ Classic的相当的连接(双向网桥)? 在核心桥我没有找到双工参数。
根据使用JMS 1.1的官方文档,ActiveMQ 5.15是否可以与JMS 2.0配合使用。将ActiveMQ 5.15与JMS 2.0配合使用有何意义。如果ActiveMQ 5.15 JMS 2.0不是一种可行的方法,那么Artemis是一个很好的替代品吗?Artemis是否足够稳定,可以用于生产级企业应用程序?
1天前 嗨,当试图根据http://wso2.org/project/esb/java/4.0.3/docs/samples/transport_samples.html/sample250使用wso2 esb侦听来自JMS队列的消息时,我遇到了一个异常,如下所示 XML解析错误:格式不正确的位置: org.apache.axis2.axisfault:系统无法从jms://jmslistener
要运行Kafka,需要在文件。有两种设置我不理解。 有人可以解释侦听器和广告侦听器属性之间的区别吗? 留档说: 侦听器:套接字服务器侦听的地址。 和 advertised.listeners:主机名和端口代理将向生产者和消费者做广告。 我什么时候必须使用哪个设置?