2014-07-07 62 views
1

我正在嘗試爲使用PHP編寫的我的客戶實現故障轉移功能。下面是結構:PHP stomp客戶端不會故障轉移到輔助MQ

<?php 
require_once $root.'lib/stomp.php'; 

$con = new Stomp('failover://(tcp://MQ1:61612,tcp://MQ2:61612)?randomize=false'); 
$con->connect(username,password); 
$con->subscribe($receiveQueue, array('ack' => 'client','activemq.prefetchSize' => 1)); 

while ($con->hasFrameToRead() == true) { 
    $con->begin("tx1"); 

    if($con->isConnected() == false) { 
     $con->_reconnect(); 
    } 

    // bla bla bla... 
} 

$con->disconnect(); 
?> 

當我開始PHP客戶端,它可以連接MQ1,但之後,我殺死MQ1服務器的MQ服務,它並沒有故障轉移到MQ2。

請問我有沒有遺漏任何部分?或者,MQ服務器端是否需要進行必要的配置?

預先感謝您:)

+0

你應該讓人們知道你正在使用 –

+0

什麼客戶端我使用這個PHP客戶端: http://www.php.net/manual/en/book.stomp.php – TingYuan

+0

如果客戶端啓動會發生什麼並且MQ1已關閉,它是否連接到MQ2?您確定客戶端支持運行時故障轉移,而不僅僅是連接時間故障轉移嗎? –

回答

0

從PHP客戶端的我到目前爲止看到的故障切換隻適用於連接,並且不會重新算賬。我不確定您使用的特定客戶端的狀態,但您應該與開發人員覈對以確定是否真的支持。

還應該注意的是,爲了正確檢測到連接丟失,客戶端可能需要主動使用套接字,或者使用STOMP v1.1或更高版本在後臺執行某種保持活動狀態的檢查節拍,否則連接損失可能會被忽視。

最好的辦法是與您正在使用的PHP Stomp客戶端的開發人員一起尋找一些解決方案。

相關問題