消費者事件

當監聽器(消費者)發生某種故障時,容器會發布應用程式事件。ListenerContainerConsumerFailedEvent 事件具有以下屬性:

  • container:消費者出現問題的監聽器容器。

  • reason:故障的文字原因。

  • fatal:一個布林值,指示故障是否致命。對於非致命異常,容器會根據 recoveryIntervalrecoveryBackoff(對於 SimpleMessageListenerContainer)或 monitorInterval(對於 DirectMessageListenerContainer)嘗試重新啟動消費者。

  • throwable:捕獲到的 Throwable

這些事件可以透過實現 ApplicationListener<ListenerContainerConsumerFailedEvent> 來消費。

concurrentConsumers 大於 1 時,所有消費者都會發布系統範圍的事件(例如連線故障)。

如果消費者因其佇列之一被獨佔使用而失敗,則預設情況下,除了釋出事件外,還會發出 DEBUG 級別日誌(自 3.1 起,以前是 WARN)。要更改此日誌記錄行為,請在 AbstractMessageListenerContainer 例項的 exclusiveConsumerExceptionLogger 屬性中提供自定義的 ConditionalExceptionLogger。此外,SimpleMessageListenerContainer 在此類異常後的消費者重啟現在預設記錄為 DEBUG 級別(以前是 INFO)。已向 ConditionalExceptionLogger 添加了一個新方法 logRestart() 以允許更改此行為。

此外,AbstractMessageListenerContainer.DefaultExclusiveConsumerLogger 現在是公共的,允許其被子類化。

致命錯誤總是以 ERROR 級別記錄。此行為不可修改。

在容器生命週期的各個階段還會發布其他幾個事件:

  • AsyncConsumerStartedEvent:當消費者啟動時。

  • AsyncConsumerRestartedEvent:當消費者在故障後重新啟動時 - 僅限 SimpleMessageListenerContainer

  • AsyncConsumerTerminatedEvent:當消費者正常停止時。

  • AsyncConsumerStoppedEvent:當消費者停止時 - 僅限 SimpleMessageListenerContainer

  • ConsumeOkEvent:當從代理收到 consumeOk 時,包含佇列名稱和 consumerTag

  • ListenerContainerIdleEvent:參見 檢測空閒非同步消費者

  • MissingQueueEvent:當檢測到缺少佇列時。

© . This site is unofficial and not affiliated with VMware.