我应该选择哪种ActiveMQ传输?

时间:2015-12-11 11:07:16

标签: php activemq stomp qpid php-amqp

我们使用ActiveMQ,php和stomp。而且我们发现,当ActiveMQ重新启动时,在stomp上工作的消费者无法识别连接丢失。我发现,只有stomp 1.2支持心跳。而ActiveMQ使用stomp 1.1和最新的php stomp实现仅支持1.0版本。 此外,我尝试amqp,但我发现最新的实现,我发现PHP支持0.9.1,ActiveMQ使用1.0版本,当客户端连接ActiveMQ返回错误:

WARN | Connection attempt from non AMQP v1.0 client. AMQP,0,0,9,1
WARN | Transport Connection to: tcp://127.0.0.1:42168 failed: org.apache.activemq.transport.amqp.AmqpProtocolException: Connection from client using unsupported AMQP attempted

此外我尝试编译qpid质子,但我在ubuntu中遇到一些问题,我对他们的php示例感到困惑:https://qpid.apache.org/releases/qpid-proton-0.8/messenger/php/examples/recv.php.html 我在哪里可以找到包含的proton.php?

我应该选择哪种运输方式?

1 个答案:

答案 0 :(得分:-1)

似乎你有一个版本的僵局......没有简单的解决方案。

选项可以是在应用程序级别实现心跳。每隔X秒做:   - 连接   - 发送到队列(例如,心跳)   - 从同一队列接收   - 睡眠X秒(X应该小于重启ActiveMQ所需的时间)

这样,您的代码将意识到ActiveMQ已重新启动,其余连接可能会重置。

如果您的项目可行,我会切换到RabbitMQ并使用AMQP和php-amqplib。