springcloud ActiveMQ设置多个并行消费者

Posted 疯子加天才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springcloud ActiveMQ设置多个并行消费者相关的知识,希望对你有一定的参考价值。

还是结合实际项目说把,最近在做跟保险公司和第三方借贷平台对接的项目;

其中需要第三方借贷平台借款并和保险挂对勾,也就是每次借钱的时候可以做一次保;

这里面正常情况下的逻辑场景:

借贷平台:借贷审核通过-->接收信息-->保险审核通过-->下发钱款通知APP执行出单;

APP:出单{保单创建-->保单核保-->保单支付-->保单承保-->回调通知完成}

其中核保、支付、承保都是对接的保险公司内部接口,他们这几个接口耗时分别是保单创建小于1s、核保1-3s、支付2-5s、承保1-3s,大致走完一个下单流程最快需要5s左右;

出单接口用消息队列完全能hold住,刚开始测的时候没任何问题(此时还没有设置并行消费者个数),等上线之后第三方借贷平台大量放单进来导致这一个队列卡了几千条出单数据,等最后一单执行完毕,接收队列的时间是15:00:00,消费的时间是16:30:13,中间竟然隔了1个小时,导致钱被用户取走,并未扣费成功;

设置并行消费者我知道的有2种方式,可能还有其他的;

方式一:

在配置文件上直接做设置,jms是一个标准或者说是一个协议,activemq是jms的一种实现,所以配置spring jms监听就可以

yml文件:

  1.  
    spring:
  2.  
    jms:
  3.  
    listener:
  4.  
    max-concurrency: 10
  5.  
    concurrency: 6

concurrency当前并行消费者数量;

max-concurrency当前并行消费者数量达到6之后会再开至最大10;

properties文件

  1.  
    spring.jms.listener.concurrency=6
  2.  
    spring.jms.listener.maxConcurrency=10

方式二:

在注解上设置,这个比较灵活,可以根据某个消费者的应用场景去设置

@JmsListener(destination = "issuePolicy", concurrency = "6")

concurrency设置当前并行消费者数量;

 

未设置并行消费者之前日志打印情况:

 

设置并行消费者之后日志打印情况:

 

转载请注明出处,谢谢!

现在人的素质都没有了,辛辛苦苦做的东西都被转载,又不注明出处,稍微改点东西就美其名曰自己原创?笑死我了,不屑于跟你计较;

 

 

上面这人某n抄袭地址:https://blog.csdn.net/u014209975/article/details/78599961

本人原创地址:https://www.cnblogs.com/zhouyantong/p/7682941.html

 

转载于:https://www.cnblogs.com/zhouyantong/p/9645333.html

以上是关于springcloud ActiveMQ设置多个并行消费者的主要内容,如果未能解决你的问题,请参考以下文章

消息队列 ActiveMQ

消息队列 ActiveMQ

spring+activemq中多个consumer同时处理消息时遇到的性能问题

SpringCloud 设置多个运行实例的端口号

如何使用 Spring JMS 在 ActiveMQ 中创建多个侦听器

activeMQ