問題タブ [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 投票する
0 に答える
232 参照

php - Rabbitmq は、クラッシュ/再起動後に確認済みメッセージを復元します

私はosxでPHPを使用してウサギを使用しています。

簡単な例。50K の永続的なメッセージを持つ 1 つの永続的なキューがあります。コンシューマ スクリプトを実行します。そのスクリプトの例があります:

コンシューマー スクリプトを実行した後、うさぎの webadmin で、そのキューからのメッセージ数が減少していることがわかります。

すべて問題ないようです。

CTRL+C を使用して PHP コンシューマー スクリプトを強制終了し、たとえば 10K のメッセージが消費されるまでスクリプトを停止すると、40K のメッセージがキューに残っていることがわかります。

大丈夫です。

しかし、消費者スクリプトの実行中に (クラッシュをシミュレートしたい)、kill -9 または CRLT+C で rabbitmq を強制終了すると、そのキューの再起動メッセージ数が 50K に復元されます。

なぜだか分からない?どこに問題があるのでしょうか?

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

php - PHP コンシューマーで AMQPMessage のメッセージ ヘッダーを変更することは可能ですか?

私は Symfony 2 と videlavaro/RabbitMqBundle を使用して、Symfony でのイベント発生後のキューにメッセージをプッシュしています。

キュー自体はすべて正常に機能しており、メッセージはキュー上で完璧に見えます。

AMQP 仕様でメッセージの内容を変更することはできないことは承知していますが、メッセージヘッダーを追加または変更することはまったく可能ですか。

基本的に、「最大再試行」の概念を適切に実装しようとしています。以前は、メッセージを「確認応答」し、同一のメッセージを同じキューに入れましたが、現在は「試行回数」フィールドが増加しています。これは問題なく機能しますが、非常に面倒な感じがするため、質問が発生しました。

TL;DR 再キューイングする前にメッセージを更新する方法はありますか? また、ヘッダーを使用するのが最善の方法ですか?

事前にどうもありがとうございました!

0 投票する
2 に答える
643 参照

php - fwrite() は、アクセスがローカル変数から \Thread から継承するオブジェクトのフィールドに移動したときに、PhpAMQP で指定された整数のパラメーター 1 をリソースであると想定します。

\Thread から継承するクラスのフィールドとして接続を使用すると、$this->connection->channel() 呼び出しで次のエラーが表示されます。

警告: fwrite() は、パラメーター 1 がリソースであると想定し、65 行目の /var/content-generator/PHP/vendor/videlvaro/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php で指定された整数

ローカル変数を使用すると、すべて正常に動作しますが、フィールド呼び出しに移るとすぐにエラーが発生します。

失敗コード:

作業コード:

私は何が欠けていますか?不足している \Thread または pthreads の一部はありますか?

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

php - RabbitMQ で RPC 呼び出しに同じチャネルを使用する

API への CURL 呼び出しを RabbitMQ RPC メッセージに置き換えました。すべてがrabbitmqの例で正常に動作します

それでも、すべてのリクエストが接続を開き、チャネルを開き、メッセージを送信し、応答を待ち、応答を取得し、チャネルを閉じ、接続を閉じるため、実装が間違っているようです。

PHPを使用してすべてのリクエストに同じ接続を使用するようにRabbitMQ RPCコールを実装するにはどうすればよいですか?

https://github.com/vidalvaro/php-amqplibライブラリを使用しています

私の実装は次のようになります https://gist.github.com/fordnox/fa41e1233a207ec5416c

次のように使用します。

0 投票する
2 に答える
7929 参照

php - AMQP - 接続タイムアウト

RabbitMQ からの応答を受信しようとすると、エラーが発生します。

ローカル PC から回答を受信しようとすると、機能しますが、運用サーバーでは機能しません。

なぜ、どのように修正できますか。

ありがとう!

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

php - RabbitMQ (PHP)投稿前にチャンネルにリスナーがいるかどうかを確認することはできますか?

php-amqplib を使用して、メッセージを送信する前にチャネルにリスナーが存在するかどうかを確認できますか。その背後にあるアイデアは、一部の聴衆のみがいる場合にのみメッセージを公開することです.

私はコードを見て、それを説明するものを見つけることができませんでした。

ご協力ありがとうございました。

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

php - リクエストのPHP AMQPパスヘッダー

AMQP にリクエストを送信しようとしていますが、リクエスト メッセージにヘッダーを追加する方法に行き詰まっています。以下は、私たちが持っているラッパーです。

上記のメッセージにヘッダーを追加する方法

call メソッドは、作成したラッパーです

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

php - PHP Ampqlib Consumer Dies: データの読み取り中にエラーが発生しました。予想される 1 バイトではなく 0 を受信しました

OK、これは Symfony2 コマンドライン スクリプトの一部です。スクリプトが待機している間、この例外で終了します。

Google を検索したところ、heartbeat と set_time_out についての言及が見つかりましたが、コンストラクターで設定しようとすると、代わりにデフォルトから変更すると、より速く終了します。

これが私のスクリプトのセットアップ方法です。そのAmqplibの側面について。

これは、コンストラクタを持つ AMQPStreamConnection.php からのものです。AMQPConnection は AMQPStreamConnection を拡張します

エラーを取り除く方法について考えていますか?