资讯专栏INFORMATION COLUMN

ActiveMQ:设置多个并行的消费者

import. / 1701人阅读

摘要:消息队列本来就是一种经典的生产者与消费者模式。为了最大效率的完成对消息队列中的消息的消费,一般可以同时起多个一模一样的消费者,以并行的方式来拉取消息队列中的消息。这样的好处有多个加快处理消息队列中的消息。

消息队列本来就是一种经典的生产者与消费者模式。生产者向消息队列中发送消息,消费者从消息队列中获取消息来消费。

消息的传送一般由一个代理来实现的,那就是Message broker(即消息代理)。Message broker有两大职责,一是消息路由,二是数据转换。这就好比A给B寄信,如果不使用邮局的话,就要自己想办法送达,费时费力,而通过邮局的话,只要B的地址在邮局中注册过,那么天涯海角也能送达。这里的邮局扮演的角色就像消息系统中的Message broker。

众所周知,消息队列是典型的’send and forget’原则的体现,生产者只管发送,不管消息的后续处理。为了最大效率的完成对消息队列中的消息的消费,一般可以同时起多个一模一样的消费者,以并行的方式来拉取消息队列中的消息。这样的好处有多个:

1.加快处理消息队列中的消息。
2.增强稳定性,如果一个消费者出现问题,不会影响对消息队列中消息的处理。

使用spring JMS来配置多个Listener实例,只需配置MessageListenerContainer就行。


    
    
    
    

多配置一个属性concurrentConsumers,设置值为4,就是同时启动4个Listener实例来消费消息。

使用MessageSender来发送100条消息,可以检查消息处理的顺序会发生变化。

for (int i = 0; i < 100; i++) {
    messageSender.send(String.format("message %d",i));
} 

运行结果如下:

...
Received: message 4
Received: message 7
Received: message 6
Received: message 5
Received: message 8
Received: message 10
Received: message 9
…  

除了设置一个固定的Listener数量,也可以设置一个Listener区间,这样MessageListenerContainer可以根据消息队列中的消息规模自动调整并行数量。


    
    
    
    
 
    

这次使用的是concurrency属性,4-8表示最小并发数是4,最大并发数为8,当然也可以给一个固定值,比如5,这样就相当于concurrentConsumers属性了。

http://blog.csdn.net/super_sc...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70220.html

相关文章

  • 如何解决MQ消息消费顺序问题

    摘要:利用的高级特性特性是一种负载均衡的机制。在一个消息被分发到之前,首先检查消息属性。属性为某个值的消息单个消息或消息集合在描述,和的对应关系,以及负载均衡策略时。同样做到了保证消息的顺序情况下,均衡消费的消费消息。 通常mq可以保证先到队列的消息按照顺序分发给消费者消费来保证顺序,但是一个队列有多个消费者消费的时候,那将失去这个保证,因为这些消息被多个线程并发的消费。但是有的时候消息按照...

    Atom 评论0 收藏0
  • ActiveMQ 嵌入Tomcat

    摘要:嵌入在一些项目中,单独开启一个,对于项目实施来说有时略显繁琐。待启动后,选择所在的进程。连接后选择页签红框的地方分别为已消费和已进入中的消息的条数。 ActiveMQ 嵌入Tomcat 在一些项目中,单独开启一个ActiveMQ,对于项目实施来说有时略显繁琐。所以我们将ActiveMQ内嵌到Tomcat,Tomcat启动同时就顺带启动了ActiveMQ。由此我们需要掌握三个个重要的知识...

    curlyCheng 评论0 收藏0
  • 消息中间件及ActiveMQ介绍

    摘要:中间件的分类基于远程过程调用的中间件。基于对象请求代理的中间件。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。 一.中间件 1.1 什么是中间件? 由于业务、机构和技术是不断变化的,因此为其服务的软件系统必须适应这样的变化。在合并、添加服务或扩展可用服务之后,公司可能无力负担重新创建信息系统所需的成本。正是在...

    jaysun 评论0 收藏0

发表评论

0条评论

import.

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<