還是結合實際項目說把,最近在做跟保險公司和第三方借貸平台對接的項目;
其中需要第三方借貸平台借款並和保險掛對勾,也就是每次借錢的時候可以做一次保;
這里面正常情況下的邏輯場景:
借貸平台:借貸審核通過-->接收信息-->保險審核通過-->下發錢款通知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