當前位置:編程學習大全網 - 網站源碼 - 後端 activemq隊列模式下的多個消費者問題

後端 activemq隊列模式下的多個消費者問題

問題

最近在項目中使用了 activemq 進行消息的異步傳遞,只有壹個消費者時,系統可以正常運行,但當增加多個消費者時,卻只有壹個消費者進行消費,其他的消費者不消費。

原因

activemq 有壹個機制,叫消息預讀取,這個機制默認會讀取 1000 條消息發往壹個消費者中,當超過 1000 消息堆積時,才會繼續讀取剩下的消息發往另壹個消費者中。當只有壹個消費者時,這個機制可以提高效率,但有多個消費者時,就不合適了,會導致其他消費者閑置。

解決辦法

在客戶端的連接上,拼接jms.prefetchPolicy.all=xxx,就可以調整消息預讀取條數,當有多個消費者時,可以適當的調低這個參數,保證其他消費者也可以消費到,從而提高消費速度。

完整的連接示例(以 spring boot 為例):

1

spring.activemq.broker-url=tcp://localhost:61616?jms.prefetchPolicy.all=2

  • 上一篇:cdr導什麽格式的可以做條幅
  • 下一篇:91直播怎麽賺錢
  • copyright 2024編程學習大全網