2

ActiveMQ、php、stomp を使用しています。また、ActiveMQ を再起動したときに、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 はどこにありますか?

どの交通機関を選ぶべきですか?

4

1 に答える 1

-1

バージョンのデッドロックがあるようです...簡単な解決策はありません。

オプションとして、アプリケーション レベルでハートビートを実装することもできます。X 秒ごとに: - 接続 - キューに送信 (例: ハートビート) - 同じキューから受信 - X 秒間スリープ (X は、ActiveMQ の再起動に必要な時間よりも短くする必要があります)

このようにして、コードは ActiveMQ が再起動されたことを認識し、残りの接続をリセットできます。

あなたのプロジェクトでそれが可能であれば、RabbitMQ に切り替えて、php-amqplib で AMQP を使用します。

于 2015-12-11T11:17:47.727 に答える