【问题标题】:PHP stomp client doesn't failover to secondary MQPHP stomp 客户端不会故障转移到辅助 MQ
【发布时间】:2014-08-28 05:04:40
【问题描述】:

我正在尝试为我的消费者实现一个故障转移功能,用 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 服务器端是否需要任何必要的配置?

提前谢谢你:)

【问题讨论】:

  • 你应该让人们知道你使用的是什么客户端
  • 我正在使用这个 PHP 客户端:php.net/manual/en/book.stomp.php
  • 如果客户端启动,MQ1 宕机,会发生什么情况,它是否连接到 MQ2?您确定客户端支持运行时故障转移,而不仅仅是连接时间故障转移吗?
  • 连接时间故障转移正在工作。目前我遇到了运行时故障转移的问题,我已经阅读了 Stomp & ActiveMQ 的官方网站,但我仍然找不到任何有关如何完成运行时故障转移的相关信息......

标签: php activemq failover stomp


【解决方案1】:

到目前为止,我从 PHP 客户端看到的故障转移仅适用于连接,之后不会重新连接。我不确定您正在使用的特定客户端的状态,但值得您与它的开发人员核实,看看是否真的受支持。

还应该注意的是,为了正确检测连接丢失,客户端需要主动使用套接字,或者使用 STOMP v1.1 或更高版本的心跳在后台进行某种保持活动检查,否则连接丢失可能会被忽视。

最好的办法是与您正在使用的 PHP Stomp 客户端的开发人员一起寻找解决方案。

【讨论】:

    猜你喜欢
    • 2014-11-28
    • 2016-06-24
    • 2016-06-12
    • 2013-02-05
    • 1970-01-01
    • 2011-01-14
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多