mq多个消费者消费一个消息_ActiveMQ多个消费者消费不均匀问题
如果客戶端處理很慢的話,Broker會在之前發送消息的反饋之前,繼續發送新的消息到客戶端。如果客戶端依舊很慢的話,沒有得到確認反饋的消息會持續增長。在這種情況下,Broker有可能會停止發送消息給消費者。當未被反饋的消息達到了prefetch limit設置的數字時,Broker將會停止給消費者發送新的消息。除非消費者開始給與反饋,否則得不到任何消息。
Default Prefetch Limit(默認預取限制):不同的消費者類型有不同的默認設置,具體設置如下:
如果想學習Java工程化、高性能及分布式、深入淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:787707172,群里有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給大家。
Queue consumer:默認1000
如果你使用一組消費者進行分散工作量的話(一個Queue對應多個消費者),典型的你應該把數字設置的小一些。如果一個消費者被允許可以聚集大量的未被確認的消息的話,會導致其它的消費者無事可做。同時,如果這個消費者出錯的話,會導致大量的消息不能被處理,直到消費者恢復之前。
Queue browser:默認500
Topic consumer:默認32766
默認值32766是數字short的最大值,也是預取限制的最大值。
Durable topic subscriber:默認100
通常你可以通過增加預取限制來改善性能。
Optimizing prefetch limits(優化預取限制):通常的,優化Queue消費和持久化主題訂閱者(durable topic subscriber)是個好主意。
Queue consumers—如果你的queue只有一個消費者的話,你可以設置預取限制為一個相當大的值。但,如果一個queue有一組消費者的話,你最好限制到一個比較小的數字上,比如0或者1.
Durable topic subscribers—通常增大預取限制的數量會提高性能。嘗試一下增加到1000.
How to set prefectch limits(如何設置預取限制):你可以在Broker端或者消費者端設置預取制限。這有三種粒度的設置方式。如下:
java寫法
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(); Properties props = new Properties();props.setProperty("prefetchPolicy.queuePrefetch 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的mq多个消费者消费一个消息_ActiveMQ多个消费者消费不均匀问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《出发吧麦芬》捕风袋获取方法
- 下一篇: 华为Mate60 Pro暴力测试 压路机