2012-08-24 39 views
0

在使用頻道一段時間後,我的rabbitmq重新啓動。
然後當java客戶端應用程序(仍在運行)嘗試使用頻道 -
我嘗試使用關閉頻道。兔子 - 打開一個關閉頻道

有沒有辦法檢查通道是否關閉?
有沒有辦法讓它打開?
有沒有辦法做到這一點,而不是永遠保留它?
(我希望當服務器重新啓動時,它會刪除通道和隊列,但可以在新的使用情況下創建它們)

謝謝。

回答

0

您可能想查看Spring AMQP integration,尤其是Spring Retry。從部分2.12:

春重試提供了一些AOP攔截器和 具有很大的靈活性來指定重試參數( 嘗試次數,異常類型,退避算法等)。 Spring AMQP還爲 提供了一些便利的工廠bean,用於爲AMQP用例創建Spring Retry 攔截器,併爲您提供強大的 類型回調接口,以實現自定義恢復邏輯。 有關更多詳細信息,請參閱StatefulRetryOperationsInterceptor 和StatelessRetryOperationsInterceptor的Javadocs和屬性。

1

Channel有一個isOpen方法可以使用。

你想要做的是監視你的連接,以便當它關閉時,你想開始輪詢服務器再次回來。查看Connection.addShutdownListenerShutdownNotifier接口的文檔。

不幸的是,封閉的頻道無法重新連接,您需要在連接重新備份後創建新的頻道。

0

您可能會檢出Lyra,這是一個RabbitMQ客戶端,它可以在意外關閉時自動恢復資源(連接/通道)。