护理专业求职简历模板:activeMQ在处理大量并发消息出现的问题

来源:百度文库 编辑:中财网 时间:2024/05/12 13:20:20
activeMQ在处理大量并发消息出现的问题
作者:marc    2008年07月11日 00:00    进入论坛   

相关讨论:activemqapache activemqjms activemqactivemq 下载activemq 介绍activemq in actionactivemq 自动重连
相关文章:  实战activeMQ Spring2.0%B5%C4POJO+JMS%B7%BD%B0%B8' title='ActiveMQ4.1 +Spring2.0的POJO JMS方案' target='_blank'>ActiveMQ4.1 +Spring2.0的POJO JMS方案让人失望的ActiveMQ。
推荐圈子: IBM WebSphere专区更多相关推荐   我在系统中使用activemq处理客户发入的手机短信,运行一段时间后发现了问题,在发送到queue的消息并发较多时,消费端只能接收一部分,比如100条消息在较短的时间内发入,总有10来条接收不到,存放在服务器上,而且这些消息一直不能主动发送出来,后面继续进入的消息都能正常处理,最终只有重新启动服务消费端才能接收到那部分剩下的消息。   1、考虑到是否是同步异步接收的关系,调整了连接参数,发现异步效果稍微好点,但还是有同样问题。   2、考虑是否事务能有影响,加入JTA事务,发现加与不加事务效果相同。 问题:   activemq的queue中,如果消费端消息处理能力不够,积累的消息存在服务端,那服务端是否会自动尝试再次发送呢,能否设置呢? 
下面是我的配置 
vm://localhost  
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。 
推荐链接Struts+2.0%D7%EE%D0%C2%BC%BC%CA%F5%D7%A8%CC%E2%CF%B5%C1%D0%BD%B2%D7%F9' target='_blank'>5月份Struts 2.0最新技术专题系列讲座在繁琐中挣扎还是简化自主管理?下载免费的 IBM DB2 Express-C 数据库 




以下为回复: 










 1楼 2008-07-14 00:00 marc 
[引用][回复]
 






修改了下代码,上面问题似乎就解决了。 就是延长消费端的处理时间,就是handleMessage时加上 Thread.sleep(20); 奇怪,接收消息处理时间长了,反而没有问题,不知道什么原因?有谁能解释下呢,谢谢 













 2楼 2008-07-11 00:00 marc 
[引用][回复]
 






下面是消费端配置   













 3楼 2008-07-15 00:00 marc 
[引用][回复]
 







这个问题终于解决了,原因应该是客户端响应不过来,然后服务端就把消息持久化保存了,客户端没有请求的情况下,服务端是不会主动去发送消息的。
在网上找了个办法,修改服务端配置,添加消息缓存,但我测试后效果不明显。 ? 尝试在客户端用线程池,或者用spring对jms的配置中加大session数目,效果都比较明显。测试后,一次发送1000条消息,没有pending的情况发生。 ? 以下是我修改后的配置  ? 













 4楼 2008-07-15 00:00 Joo 
[引用][回复]
 






客户端响应不过来是什么意思?  每一个JavaMessage都有一个等待时间吗?过期不侯? 














 5楼 2008-10-16 00:00 honno 
[引用][回复]
 






这里的客户端应该理解为消费者,客户端响应不过来也就是说消费者处理消息的速度比较慢,成为“Slow Consumer”,有大量的消息等待消费者处理。而相比而言消息生产者的速度比较快。一般情况下,如果想提高系统的吞吐量,推荐使用异步发送,适当的对ActiveMQ的broker进行优化。 














 6楼 2004-01-01 00:00 hzy9981 
[引用][回复]
 






使用会话缓冲池,应用程序可以并发处理消息。现在很少使用会话缓冲池,因为它们不是 J2EE 规范的必需部分,不支持 JTA 用户事务,并且已基本被 J2EE 规范的必需部分 - 消息驱动 Bean (MDB) - 所替代。 










本篇文章来自IDC专家网 原文链接:http://www.soidc.net/discuss/1/080711/00/690222_1.html