在使用頻道一段時間後,我的rabbitmq重新啓動。
然後當java客戶端應用程序(仍在運行)嘗試使用頻道 -
我嘗試使用關閉頻道。兔子 - 打開一個關閉頻道
有沒有辦法檢查通道是否關閉?
有沒有辦法讓它打開?
有沒有辦法做到這一點,而不是永遠保留它?
(我希望當服務器重新啓動時,它會刪除通道和隊列,但可以在新的使用情況下創建它們)
謝謝。
在使用頻道一段時間後,我的rabbitmq重新啓動。
然後當java客戶端應用程序(仍在運行)嘗試使用頻道 -
我嘗試使用關閉頻道。兔子 - 打開一個關閉頻道
有沒有辦法檢查通道是否關閉?
有沒有辦法讓它打開?
有沒有辦法做到這一點,而不是永遠保留它?
(我希望當服務器重新啓動時,它會刪除通道和隊列,但可以在新的使用情況下創建它們)
謝謝。
您可能想查看Spring AMQP integration,尤其是Spring Retry。從部分2.12:
春重試提供了一些AOP攔截器和 具有很大的靈活性來指定重試參數( 嘗試次數,異常類型,退避算法等)。 Spring AMQP還爲 提供了一些便利的工廠bean,用於爲AMQP用例創建Spring Retry 攔截器,併爲您提供強大的 類型回調接口,以實現自定義恢復邏輯。 有關更多詳細信息,請參閱StatefulRetryOperationsInterceptor 和StatelessRetryOperationsInterceptor的Javadocs和屬性。
Channel
有一個isOpen
方法可以使用。
你想要做的是監視你的連接,以便當它關閉時,你想開始輪詢服務器再次回來。查看Connection.addShutdownListener
和ShutdownNotifier
接口的文檔。
不幸的是,封閉的頻道無法重新連接,您需要在連接重新備份後創建新的頻道。
您可能會檢出Lyra,這是一個RabbitMQ客戶端,它可以在意外關閉時自動恢復資源(連接/通道)。