問題タブ [php-amqplib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2533 参照

php - PhpAmqpLib を使用して rabbitmq コンシューマーのコールバックからキュー サイズを取得する

ワーカーのコールバックから作業ステータスをログに記録し、残されたキューに多数のメッセージを含めたいと考えています。

これまでに見つけた唯一の解決策は、queue_declare結果配列の 2 番目のメンバーを取得することですが、これはワーカーの起動ごとに 1 回呼び出す必要があり、新しいメッセージごとに情報を更新する必要があります。

UPD : IMSoP の回答に基づくソリューション:

何らかの理由で、メッセージ数として常に 0 が返されます。

0 投票する
0 に答える
66 参照

php - RabbitMQ コンシューマーがしばらくすると 2 倍になる

RabbitMQ v3.7.5、AMQP 0.9.1、Erlang 20.1.7.1、PHP 7、centos 7 を使用しています。

コンシューマーは php-amqplib v2.9.1 を使用して作成されています

curl を使用して URL を呼び出して、コンシューマーを開始します。コンシューマはしばらくの間期待どおりに動作しますが、しばらくするとすべてのコンシューマが 2 倍になります。つまり、同じコンシューマに対して 2 つの接続が実行されていることが示されます。これが発生すると、キューにデータがある場合に応答するコンシューマはありませんが、キューで受信したすべてのデータは失われます。

誰かが同じ問題に直面しましたか?

消費者コード (公式サイトで提供されているものと同じコードを使用しています: https://www.rabbitmq.com/tutorials/tutorial-two-php.html )

期待される結果: コンシューマが重複しないようにする必要があります。

0 投票する
1 に答える
2067 参照

php - PHP ampq + rabbit MQ -- 長期実行プロデューサー: 既に宣言されているキューにメッセージを送信できますが、新しいキューを宣言することはできません

常に実行されているはずの「プロデューサー」がありますが、1日ほど経っても、以前に宣言したキューにメッセージを送信できるようですが、新しいキューを宣言しようとすると、爆発します:

ハートビートは消費者専用だと思いました(プロデューサーのハートビートを確認する場所がないため)?私が「消費者」ではないときにハートビートがチェックされているのはバグですか?

それとも、キューを宣言するときにスクリプトも「消費者」になるのですか?サーバーからのキューを使用する準備ができているというフィードバックを「消費」する必要があるためですか?

現在の設定方法でqueue_declareは、実行した場合に爆発するかどうかを定期的に確認して、実行する必要があるときにqueue_declare予期せず爆発しないようにするために、どのような回避策を使用できますか?

私はAMQPSSLConnection最新バージョン(2.9.2)で使用しており、ずっと$connection->isConnected()戻っtrueてきています。ハートビートは 15 秒に設定されています。