RabbitMQ与spring结合并发设置简介

作者: wencst 分类: JAVA,Uncategorized 发布时间: 2016-08-29 21:10 阅读: 6,352 次

rabbitMQ与spring结合起来,在目前应用还是比较广泛的,在spring的配置文件中:

  
     
        
        
        
        
    

我们所应用的场景为2个JVM服务做得集群环境,同时监听5个消息队列queue1-queue5,消费者监听可分为配置文件配置监听,也可以通过spring注解的方式配置监听,具体如何监听不在本文描述。
我们所用的模式是生产者消费者的模式,针对并发情况,我们做了如下问题验证:
1.两个jvm同时监听一个队列时,是否会有重复获取队列的现象?
经过测试,没有发现同一个消息被两个消费者获取并处理的现象,说明rabbitMQ对生产者消费者模式中,并发处理的还是可以的

2.同一个jvm起不同的线程,是否会有重复获取队列的现象?
经过测试,也没有发现获取相同的消息(场景雷同问题1,此处仅做简单验证)

3.同一个jvm配置concurrenctConsumers参数和maxConcurrentConsumers参数,分别作用是什么?
经过测试,concurrenctConsumers参数主要是系统启动时,线程初始的并发数量
maxConcurrenctConsumers参数主要是系统最大的并发数量
当concurrenctConsumers < maxConcurrenctConsumers时,当this.lastConsumerStarted + this.startConsumerMinInterval < now时,可以新增一个线程来取消息,spring默认的this.startConsumerMinInterval=10000ms。 反之,this.lastConsumerStopped + this.stopConsumerMinInterval < now,则减去一个线程,this.stopConsumerMinInterval默认值为60000ms 除非concurrenctConsumers 和 maxConcurrenctConsumers都为1,否则队列都是并行执行的。

如果文章对您有用,扫一下支付宝的红包,不胜感激!

欢迎加入QQ群进行技术交流:656897351(各种技术、招聘、兼职、培训欢迎加入)