`
m635674608
  • 浏览: 4932396 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

failover与ActiveMQ的jms.prefetchPolicy.queuePrefetch以及wireFormat.maxInactivityDura

    博客分类:
  • MQ
 
阅读更多

 项目使用到activeMQ,在使用过程中遇到一个问题,我使用多个线程去读取队列,每个线程使用一个queue的连接对象,这些连接对象都读取ActiveMQ中的同一个消息队列。但发现只有第一个队列可以循环读取,别的队列都读取到null,但使用activeMQ的控制台查看,队列里还有20多个消息呢,后来google才知道,原来为了性能优化,ActiveMQ为每个open的链接预抓取一个数量的消息(默认情况是100个),也就是说第一个打来的连接将队列里20多个消息都预锁定了,第二个连接读取就为空了。为了避免这样的情况,可以设置预读取为1,使用jms.prefetchPolicy.queuePrefetch参数加载open的url后面如:tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1。

failover:(tcp://localhost:61616?wireFormat.maxInactivityDuration)?jms.prefetchPolicy.queuePrefetch=1

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics