RabbitMQ的missingQueuesFatal参数
描述
從1.3.5版本開始,SimpleMessageListenerContainer?就有了這個新屬性.
當設為true?(默認值)時,如果配置隊列在中間件都不可用, 這會視為是致命的.這會導致應用程序上下文初始化失敗; 同時, 當容器還在運行時刪除了隊列,也會發生這樣的情況.
默認情況下,消費者進行3次重試來連接隊列(5秒時間間隔),如果所有嘗試都失敗了則會停止容器.
在以前版本中,此選項是不可配置的.
當設置為false, 再做了三次重試后,容器將進入恢復模式, 這也伴隨其它問題,如中間件已經發生了故障.
容器會根據recoveryInterval?屬性來嘗試恢復. 在每次恢復嘗試期間,每個消費者會以5秒的時間間隔來嘗試4次被動聲明.?這個過程將無限期地繼續下去(譯者注:有點沖突)。
你也可以使用properties bean來為所有的容器全局設置屬性,如下所示:
<util:properties id="spring.amqp.global.properties"> <prop key="smlc.missing.queues.fatal">false</prop> </util:properties>如果容器明確的設置了?missingQueuesFatal?屬性,全局屬性的值對此容器將無效.
默認的retry屬性(5秒間隔3次重試)可通過下面的屬性值來覆蓋.
屬性
mismatchedQueuesFatal(mismatched-queues-fatal)描述
這是1.6版本中加入的新屬性.當容器啟動時,如果此屬性為true (默認為false), 容器會檢查上下文中聲明的隊列是否中間件中存在的隊列是否一致.
如果屬性不匹配(如.?auto-delete) 或參數 (e.g.?x-message-ttl) 存在, 容器 (和應用程序上下文) 會拋出致命異常而導致啟動失敗.如果是在恢復期間檢測到的問題,容器會停止.
必須在上下文中存在單個RabbitAdmin?(或使用rabbitAdmin屬性在容器上特別配置);否則此屬性必須為false.
如果在初始啟動期間,中間件還不可用,容器啟動后,當建立連接時會檢查條件.
重要
該檢查針對的是上下文的所有隊列,而不僅僅是特定監聽器配置使用的隊列.如果你希望只檢查容器使用的隊列,你需要為這個容器配置單獨的RabbitAdmin?, 并使用rabbitAdmin?屬性為其提供一個引用.?
總結
以上是生活随笔為你收集整理的RabbitMQ的missingQueuesFatal参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rabbitmq常用配置
- 下一篇: 什么是MQ