2017-04-25 177 views
0

我正在使用activeMQ tcp故障轉移連接並創建使用者並訂閱生產者生成的主題。 現在我該如何管理網絡故障?如果代理和客戶端之間的連接斷開,我怎麼知道連接何時重新建立? 另外,我怎麼知道生產者是否正在運行?在生產者重新啓動的情況下;我如何知道它,以便我可以重新訂閱這些主題?如何在activeMq tcp故障轉移情況下處理連接故障

回答

3

與FailoverTransport你不必重新連接管理,他將嘗試重新連接indefinetly除非指定maxReconnectAttempts

重新訂閱如果生產者重啓的話題?沒有必要因爲你的消費是連接他不要去關心生產者的

即使不需要,就FailoverTransport狀態更改通知:

ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(tcp://host1:5670)"); 
    cf.setTransportListener(new TransportListener() { 
     @Override 
     public void transportResumed() { 
     } 

     @Override 
     public void transportInterupted() { 
     } 

     @Override 
     public void onException(IOException error) { 
     } 

     @Override 
     public void onCommand(Object command) { 
     } 
    }); 
+0

我想這一點;我的觀察是,如果我從機器(消費者/訂戶)拉出n/w電纜,15秒後,獲得transportInterupped,之後,即使我連接n/w電纜也沒有任何反應。 (我沒有得到我訂閱的主題的任何新的更新)。主題不會持久。 – Ark

+0

當然,如果您使用沒有持久訂閱的主題。您必須創建持久訂閱或使用追溯使用者http://activemq.apache.org/retroactive-consumer.html –

+0

我正在使用追溯使用者,但不是持久訂閱。我是否也應該使用持久訂閱?這將解決我的消費者連接回n/w後沒有得到任何更新的問題嗎? – Ark