还是结合实际项目说把,最近在做跟保险公司和第三方借贷平台对接的项目;
其中需要第三方借贷平台借款并和保险挂对勾,也就是每次借钱的时候可以做一次保;
这里面正常情况下的逻辑场景:
借贷平台:借贷审核通过-->接收信息-->保险审核通过-->下发钱款通知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文件:
-
spring:
-
jms:
-
listener:
-
max-concurrency: 10
-
concurrency: 6
concurrency当前并行消费者数量;
max-concurrency当前并行消费者数量达到6之后会再开至最大10;
properties文件
-
spring.jms.listener.concurrency=6
-
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