Activemq 问题记录2--预取指令的配置
来源:互联网 发布:pp助手mac版备份照片 编辑:程序博客网 时间:2024/04/28 22:31
问题描述:
当一个MQ队列里已经有几百条消息,而没有产生新消息的时候,现在先开启一个consumer去从队列里取消息,可以正常取到,但是当想再开一个consumer的时候却一条消息也取不到,只有等有新的消息生成的时候才可以取到。(其中consumer通过receive来获取消息,不过相信事件触发回调的方式也一样)。难道这是activemq的BUG经过分析问题不是这样的。
问题原因:
问题的原因,因为Activemq服务器端为了加速指令分发,所以会根据consumer的配置来做prefetch也就是消息预取,所以当开启一个consumer的时候,消息队列里的消息都分配给了第一个consumer这样,第二个再起来也不可能正常获取没有处理的指令,看着现像就想是不能支持多consumer。而新指令产生了,自然会分配给空闲的consumer。所以新指令可以正常给第二个consumer。这样一分析,问题就出现在consumer的prefetchsize配置。
解决方式:
给consumer配置prefetchsize
方式1:在URI配置
failover://(tcp://localhost:61616)?cms.PrefetchPolicy.queuePrefetch=1
这样配置就针对这个URI下的所有queue都生效。如果只想对某一个队列来配置,可以用方式二在destination上配置方式如下
方式2:在destination配置
com.foo?consumer.prefetchSize=2
这样就只对queue com.foo生效
- Activemq 问题记录2--预取指令的配置
- Activemq 预取指令的配置
- 几个关于activeMQ的配置记录
- Activemq 问题记录1
- activemq listener 配置问题
- 一个oracle随机取记录的问题
- ActiveMq的配置
- ActiveMQ的XML配置
- ActiveMQ的安全性配置
- spring+activemq的配置
- ActiveMQ的安全性配置
- ActiveMQ的简单配置
- 关于ActiveMQ的配置
- spring+activemq的配置
- 关于ActiveMQ的配置
- 关于ActiveMQ的配置
- 关于ActiveMQ的配置
- ActiveMQ的集群配置
- android 文件系统分析
- document.cookie
- 使用alter table命令修改数据表
- 开发技术--通信篇
- 使用UNION提示错误“不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型。”
- Activemq 问题记录2--预取指令的配置
- Android res文件夹下资源定义及使用
- 女孩正确的生活方式
- 数据库中的JOIN
- zoj1041
- 设计模式 总结 浅谈 二 + code
- linux vsftpd 设置和命令
- 初学Java多线程:线程简介
- 在非Activity中使用startActivity