activemq 控制高并发的问题

zzw1531439090 2017-08-25 12:00:25
最近项目中遇到一个问题:
我们的项目会调用外购产品接口,外购的产品只能支持100路并发,如果超过100路会提示调用已满。所以需要在程序中需要做一个类似于队列的东西保证超过100并发的请求按顺序存在队列中。
于是我去看了下activemq,由于刚了解,有几个疑问,望大神帮忙解答。
1、activemq我感觉应该是主要解决异步处理的问题。但网上很多人说可以解决高并发的压力,一个消息发送到队列后,消费者会从队列拿到消息后进行处理,也就是请求的消息都会被立马处理,好像没看到消费者端有类似于同时只能处理3个消息、处理完后再接收消息的配置,这个不用消息队列直接调用感觉没什么区别(处理异步),服务器压力还是很大。所以解决高并发的压力这一点是怎么理解的?
2、回到我们项目,如果用activemq,外购产品的处理作为消费者端,接收队列的请求。我想做到当产品有100个并发在运行的时候,暂停从队列接收消息,当处理完N个并发后实时再从队列获取消息接着处理。请问这个是否可实现,实现思路是怎样的?
...全文
670 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2017-08-27
  • 打赏
  • 举报
回复
参考文档 (版本不是最新的) jboss消息服务器设置 http://docs.jboss.org/hornetq/2.2.14.Final/user-manual/en/html/appserver-integration.html#d0e7662 IBM消息服务器设置 https://www.ibm.com/support/knowledgecenter/zh/SSFTDH_7.5.1/com.ibm.wbpm.main.doc/topics/ctun_zos_tunemdbactspec.html
tianfang 2017-08-25
  • 打赏
  • 举报
回复
消息驱动Bean MDB,是可以设置并发个数,比如设置为100. 100个MDB都在工作时,新消息到来时,无法获得MDB,队列就处于阻塞状态,直到有MDB被释放,消息服务器发送新消息给MDB
pilnyun335857183 2017-08-25
  • 打赏
  • 举报
回复
首先你对消息队列的理解有偏差。消息队列对高并发的处理是将外部的请求调用信息放置在队列中然后后端处理系统按处理能力从消息队列消费消息(相当处理请求),也就是处理一个消费一个这样;这样就保证了后端系统总是在自身处理能力范围内工作。 像楼主项目中碰到的问题用消息队列其实不太适用,用阻塞队列倒是相当合适。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧