您所说的使用者是DefaultMessageListenerContainer
的不同线程还是DefaultMessageListenerContainer
的不同实例?
您可以通过更改DefaultMessageListenerContainer的线程数来动态增加和减少
org.springframework.jms.listener.DefaultMessageListenerContainer.concurrentConsumers
而且
org.springframework.jms.listener.defaultmessageListenerContainer.maxConcurrentConsumers
相应地
更新
如果使用多个使用者和/或线程,则需要调整PrefetchPolicy。
persistent queues (default value: 1000)
non-persistent queues (default value: 1000)
persistent topics (default value: 100)
non-persistent topics (default value: Short.MAX_VALUE - 1)
所有消息都被发送到第一个连接的使用者,当另一个使用者连接时,他不会接收消息,因此,如果队列有并发使用者,那么要更改此行为,需要将prefetchPolicy设置为比默认值更低的值。例如,将这个jms.prefetchpolicy.queueprefetch=1
添加到activeMQ.xml中的uri配置中,或者在客户端url上设置它,如下所示
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://172.16.143.99:61616?jms.prefetchPolicy.queuePrefetch=1");
建议使用较大的预取值,以获得较高的消息容量和较高的性能。但是,对于较低的消息卷(其中每个消息需要很长时间来处理),预取应设置为1。这可以确保使用者一次只处理一条消息。但是,将预取限制指定为零将导致使用者轮询消息,一次轮询一条消息,而不是将消息推送给使用者。
查看http://activemq.apache.org/what-is-the-prefetch-limit-for.html
而且
我试图将WSO2配置为使用来自ActiveMQ的消息,并在处理过程中引发错误时requeue(通常是当对远程web服务的调用失败时)。 Activemq在Axis2.xml中配置,属性transport.jms.SessionTransact设置为true。 当远程URL的格式无效(例如使用错误的协议)时,JMS回滚/重新传递/[重定向到死信]特性可以正常工作。但是,如果我停止远程web服务器,或
我正在使用Spring靴和活动MQ设置一个持久的JMS主题使用者。我能够使用Spring靴@JmsListener注释来使一切正常工作(作为耐用消费者成功运行)。但是,因为我想动态创建侦听器,所以我尝试使用 JmsListener 配置接口来创建它们。 使用主题“消费者”下面的代码可以成功地创建和使用消息。但是,问题是它创造的消费者并不持久。我在工厂中将clientId、setSubscripti
我试图以一种可伸缩的方式将Spring JMS消息与@JMSListener一起使用,但我没有看到它发生。我有一个ConnectionFactory bean,它返回通过JMS和数据库数据源池连接到Oracle高级队列的工厂。 当每个@JMSListener接收器再次连接到JMS(从而连接到数据库池)时,问题就开始了。我的理解是,我可以有许多@JMSListener方法,每个服务一个,但这样做我是
问题内容: 我有一个带有HornetQ的JBoss-6服务器和一个队列: 有一个不同的消费者(在不同的机器)连接到这个队列中,但只有一个 单一的 消费者是活动的时间。如果我关闭此使用者,则消息将立即由其他使用者之一处理。 由于我的消息需要一些耗时的处理,因此我希望多个使用者同时处理其唯一消息。 我记得在早期版本的JBoss中也有类似的情况,该设置可以正常工作。在Jboss-6中,消息传递系统运行良
我可以看到请求消息被加入和出列,响应消息被加入和出列。但我有个例外, 我应该如何检索响应?
JMS队列有2个消费者,同步和异步Java应用程序进程等待响应。1)同步应用程序发送请求,并根据JMS相关ID等待响应60秒。2)异步线程将不断侦听同一队列。