還是結合實際項目說把,最近在做跟保險公司和第三方借貸平台對接的項目;
其中需要第三方借貸平台借款并和保險挂對勾,也就是每次借錢的時候可以做一次保;
這裡面正常情況下的邏輯場景:
借貸平台:借貸稽核通過-->接收資訊-->保險稽核通過-->下發錢款通知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設定目前并行消費者數量;
未設定并行消費者之前日志列印情況:
設定并行消費者之後日志列印情況:
轉載請注明出處,謝謝!
現在人的素質都沒有了,辛辛苦苦做的東西都被轉載,又不注明出處,稍微改點東西就美其名曰自己原創?笑死我了,不屑于跟你計較;