問題タブ [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 - Rabbitmq は、クラッシュ/再起動後に確認済みメッセージを復元します
私はosxでPHPを使用してウサギを使用しています。
簡単な例。50K の永続的なメッセージを持つ 1 つの永続的なキューがあります。コンシューマ スクリプトを実行します。そのスクリプトの例があります:
コンシューマー スクリプトを実行した後、うさぎの webadmin で、そのキューからのメッセージ数が減少していることがわかります。
すべて問題ないようです。
CTRL+C を使用して PHP コンシューマー スクリプトを強制終了し、たとえば 10K のメッセージが消費されるまでスクリプトを停止すると、40K のメッセージがキューに残っていることがわかります。
大丈夫です。
しかし、消費者スクリプトの実行中に (クラッシュをシミュレートしたい)、kill -9 または CRLT+C で rabbitmq を強制終了すると、そのキューの再起動メッセージ数が 50K に復元されます。
なぜだか分からない?どこに問題があるのでしょうか?
php - PHP コンシューマーで AMQPMessage のメッセージ ヘッダーを変更することは可能ですか?
私は Symfony 2 と videlavaro/RabbitMqBundle を使用して、Symfony でのイベント発生後のキューにメッセージをプッシュしています。
キュー自体はすべて正常に機能しており、メッセージはキュー上で完璧に見えます。
AMQP 仕様でメッセージの内容を変更することはできないことは承知していますが、メッセージヘッダーを追加または変更することはまったく可能ですか。
基本的に、「最大再試行」の概念を適切に実装しようとしています。以前は、メッセージを「確認応答」し、同一のメッセージを同じキューに入れましたが、現在は「試行回数」フィールドが増加しています。これは問題なく機能しますが、非常に面倒な感じがするため、質問が発生しました。
TL;DR 再キューイングする前にメッセージを更新する方法はありますか? また、ヘッダーを使用するのが最善の方法ですか?
事前にどうもありがとうございました!
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 の一部はありますか?
php - RabbitMQ で RPC 呼び出しに同じチャネルを使用する
API への CURL 呼び出しを RabbitMQ RPC メッセージに置き換えました。すべてがrabbitmqの例で正常に動作します
それでも、すべてのリクエストが接続を開き、チャネルを開き、メッセージを送信し、応答を待ち、応答を取得し、チャネルを閉じ、接続を閉じるため、実装が間違っているようです。
PHPを使用してすべてのリクエストに同じ接続を使用するようにRabbitMQ RPCコールを実装するにはどうすればよいですか?
https://github.com/vidalvaro/php-amqplibライブラリを使用しています
私の実装は次のようになります https://gist.github.com/fordnox/fa41e1233a207ec5416c
次のように使用します。
php - AMQP - 接続タイムアウト
RabbitMQ からの応答を受信しようとすると、エラーが発生します。
ローカル PC から回答を受信しようとすると、機能しますが、運用サーバーでは機能しません。
なぜ、どのように修正できますか。
ありがとう!
php - RabbitMQ (PHP)投稿前にチャンネルにリスナーがいるかどうかを確認することはできますか?
php-amqplib を使用して、メッセージを送信する前にチャネルにリスナーが存在するかどうかを確認できますか。その背後にあるアイデアは、一部の聴衆のみがいる場合にのみメッセージを公開することです.
私はコードを見て、それを説明するものを見つけることができませんでした。
ご協力ありがとうございました。
php - リクエストのPHP AMQPパスヘッダー
AMQP にリクエストを送信しようとしていますが、リクエスト メッセージにヘッダーを追加する方法に行き詰まっています。以下は、私たちが持っているラッパーです。
上記のメッセージにヘッダーを追加する方法
call メソッドは、作成したラッパーです
php - PHP Ampqlib Consumer Dies: データの読み取り中にエラーが発生しました。予想される 1 バイトではなく 0 を受信しました
OK、これは Symfony2 コマンドライン スクリプトの一部です。スクリプトが待機している間、この例外で終了します。
Google を検索したところ、heartbeat と set_time_out についての言及が見つかりましたが、コンストラクターで設定しようとすると、代わりにデフォルトから変更すると、より速く終了します。
これが私のスクリプトのセットアップ方法です。そのAmqplibの側面について。
これは、コンストラクタを持つ AMQPStreamConnection.php からのものです。AMQPConnection は AMQPStreamConnection を拡張します
エラーを取り除く方法について考えていますか?