我正在尝试为我的消费者实现一个用PHP编写的故障转移功能。以下是结构:
<?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客户端到目前为止,我看到故障转移仅适用于连接,之后不会重新连接。我不确定您使用的特定客户端的状态,但是与您的开发人员核实是否真的支持它是值得的。
还应该注意,为了正确检测连接丢失,客户端需要主动使用套接字,或者使用STOMP v1.1或更高版本的心跳在后台进行某种保持活动检查否则连接丢失可能会被忽视。
您最好的选择是与您正在使用的PHP Stomp客户端的开发人员合作以找到一些解决方案。