問題タブ [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.
php - PhpAmqpLib を使用して rabbitmq コンシューマーのコールバックからキュー サイズを取得する
ワーカーのコールバックから作業ステータスをログに記録し、残されたキューに多数のメッセージを含めたいと考えています。
これまでに見つけた唯一の解決策は、queue_declare
結果配列の 2 番目のメンバーを取得することですが、これはワーカーの起動ごとに 1 回呼び出す必要があり、新しいメッセージごとに情報を更新する必要があります。
UPD : IMSoP の回答に基づくソリューション:
何らかの理由で、メッセージ数として常に 0 が返されます。
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 )
期待される結果: コンシューマが重複しないようにする必要があります。
php - PHP ampq + rabbit MQ -- 長期実行プロデューサー: 既に宣言されているキューにメッセージを送信できますが、新しいキューを宣言することはできません
常に実行されているはずの「プロデューサー」がありますが、1日ほど経っても、以前に宣言したキューにメッセージを送信できるようですが、新しいキューを宣言しようとすると、爆発します:
ハートビートは消費者専用だと思いました(プロデューサーのハートビートを確認する場所がないため)?私が「消費者」ではないときにハートビートがチェックされているのはバグですか?
それとも、キューを宣言するときにスクリプトも「消費者」になるのですか?サーバーからのキューを使用する準備ができているというフィードバックを「消費」する必要があるためですか?
現在の設定方法でqueue_declare
は、実行した場合に爆発するかどうかを定期的に確認して、実行する必要があるときにqueue_declare
予期せず爆発しないようにするために、どのような回避策を使用できますか?
私はAMQPSSLConnection
最新バージョン(2.9.2)で使用しており、ずっと$connection->isConnected()
戻っtrue
てきています。ハートビートは 15 秒に設定されています。