missingQueuesFatal(missing-queues-fatal)
描述
从1.3.5版本开始,SimpleMessageListenerContainer 就有了这个新属性.
当设为true (默认值)时,如果配置队列在中间件都不可用, 这会视为是致命的.这会导致应用程序上下文初始化失败; 同时, 当容器还在运行时删除了队列,也会发生这样的情况.
默认情况下,消费者进行3次重试来连接队列(5秒时间间隔),如果所有尝试都失败了则会停止容器.
在以前版本中,此选项是不可配置的.
当设置为false, 再做了三次重试后,容器将进入恢复模式, 这也伴随其它问题,如中间件已经发生了故障.
容器会根据recoveryInterval 属性来尝试恢复. 在每次恢复尝试期间,每个消费者会以5秒的时间间隔来尝试4次被动声明. 这个过程将无限期地继续下去(译者注:有点冲突)。
你也可以使用properties bean来为所有的容器全局设置属性,如下所示:
false
如果容器明确的设置了 missingQueuesFatal 属性,全局属性的值对此容器将无效.
默认的retry属性(5秒间隔3次重试)可通过下面的属性值来覆盖.
属性
mismatchedQueuesFatal(mismatched-queues-fatal)
描述
这是1.6版本中加入的新属性.当容器启动时,如果此属性为true (默认为false), 容器会检查上下文中声明的队列是否中间件中存在的队列是否一致.
如果属性不匹配(如. auto-delete) 或参数 (e.g. x-message-ttl) 存在, 容器 (和应用程序上下文) 会抛出致命异常而导致启动失败.如果是在恢复期间检测到的问题,容器会停止.
必须在上下文中存在单个RabbitAdmin (或使用rabbitAdmin属性在容器上特别配置);否则此属性必须为false.
如果在初始启动期间,中间件还不可用,容器启动后,当建立连接时会检查条件.
重要
该检查针对的是上下文的所有队列,而不仅仅是特定监听器配置使用的队列.如果你希望只检查容器使用的队列,你需要为这个容器配置单独的RabbitAdmin , 并使用rabbitAdmin 属性为其提供一个引用.



