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

php - 特定の Vm IP にメッセージを送信する方法

だから私はPHPでRabbitMqを使用しています。RabbitMqと2つのVms(ubuntuサーバー)を含むサーバーがあります。詳細については、これが私のコードです。

RabbitmQ サーバー: send.php:

これは最初の Vm のコードです: recive.php :

NB: 私の RobbitmQ では、localhost を使用するとエラーは発生しませんが、localhost を使用すると、Vm の制御を制御できず、メッセージが送信されます

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

php - RabbitMQ : DLX からのバインド

その情報(ドキュメントを含む)を検索しましたが、見つかりません。

RabbitMQ v. 2.7.1 で最新バージョンのphp-amqplibを使用しています。3 つのキューと 3 つの交換があります。

動作は非常に簡単です。メッセージは .xml ファイルに発行されますEXCHANGE_TO_PROCESS。外部ワーカーがメッセージを処理します。処理が A-OK になった場合、メッセージは単純に ACK され、キューから削除されます (この部分は完全に機能します)。処理がうまくいかない場合、メッセージは代わりに に挿入され、 5 分間の TTL の後、再処理EXCHANGE_WAITINGのために DLX を介して に再挿入されます。EXCHANGE_TO_PROCESSただし、3 回目の失敗の後、cron ジョブが来る場所に挿入され、EXCHANGE_TO_CLEANメッセージやログ エラーなどをクリーンアップします。

ただし、私が遭遇した問題は、コードが (予想どおり) を明確に にバインドしQUEUE_WAITINGているEXCHANGE_WAITINGことですが、RabbitMQ 管理ページを調べると、2 つのキューがその交換にバインドされていることに気付きました。注文。5 分が経過すると、メッセージは消えます。理由はよくわかりません。QUEUE_TO_PROCESSQUEUE_WAITING

これらすべてが私の質問に私たちをもたらします:デッドレター交換は暗黙的にパラメータの交換をキューにバインドしますか? そして : 失われたメッセージに何が起こっている可能性がありますか?

編集

私は私よりもさらに混乱しています。私は次の非常に基本的なコードを試しました:

これにより、2 つのキューと 2 つの exchange が作成され (ルーティング キーの煩わしさを避けるために、私は見てきましたfanout)、queueA を exchangeA に、queueB を exchangeB にバインドし、queueA に TTL を設定し、その DLX を exchangeB に設定します。管理ページで何が起こっているかを観察すると、予想どおり、メッセージが queueA で 5 秒間費やされた後、上記のより複雑なコードのようにメッセージが消えます。

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

php-amqplib - php-amqplib の非ブロッキングの例で警告がスローされる

AMQP 通信に videlalvaro/php-amqplib ライブラリを使用しようとしていますが、ノンブロッキング バージョンを動作させることができないようです。demo/amqp_consumer_non_blocking.php を実行すると、次のエラー メッセージが継続的に表示されます。

@ 記号を使用してこのメ​​ッセージを抑制すると、エラーが静かになりますが、それでも何も表示されません。

私はそれにメッセージを正しく送信していると思います.Webインターフェイスを使用してメッセージをキューに直接発行していますが、私が言うように、非ブロッキングループでは何も得られません.

ブロッキング デモ (demo/amqp_consumer.php) で同じプロセスを実行すると、期待どおりに動作します。

他の誰かがこの種の問題を抱えていましたか、それとも可能な解決策を教えてくれますか? ありがとう。

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

php - RabbitMq: 重複したメッセージを置き換える

登録された Web フックのデータを送信するために RabbitMq を使用しています。

ベース情報: システムで連絡先が作成された場合、メッセージはキューに入れられ、コンシューマーは後で登録された URL にフック データを送信します。

私の質問に: 連絡先が 5 秒で 2 回更新され、両方のメッセージがまだキューにある可能性があります。しかし、2 番目のメッセージがキューに入れられた場合、最初のメッセージが削除されることを望みます。

メッセージを手動で削除できないことはわかっています。しかし、メッセージにIDを設定することは何とか可能で、同じIDを持つ2つのメッセージが同じキューにある場合、最初のメッセージは自動的に削除/置換されますか? その 1 つのリクエストのみが URL に送信されます。メッセージ自体にメッセージIDを設定できることは知っています。しかし、古いものに取って代わるものは何も見つかりませんでした。

私のPHPコード(簡略化):

ところで、私は php amqplib https://github.com/videlvaro/php-amqplibを使用しています。

助けてくれてありがとう

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

php - メッセージ delivery_info に RabbitMQ のチャネル参照がありません

私は現在、basic_get を使用して rabbitMQ からメッセージを取得した後、受信したメッセージに対して ack を自動的に送信せずにいくつかのロジックを実装しています。

ここのチュートリアル(メッセージ確認セクション) によると、メッセージ自体内でチャネル参照が見つからず、上記のリンクに記載されているように ack を送信できません。

これは、私のメッセージ配信情報配列にそのようなチャネルがないためです。
それが欠けているのはどうしてだろうか。

編集:基本的なgetのコードスニペット

これが私のメッセージの var_dump です:(黄色の部分)
ampq メッセージl

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

php - amqp が rabbitmq にアクセスできない

クライアント側から rabbitmq にアクセスしようとすると、500 内部サーバー エラーが返されます。

クライアント側とrabbitmq間の接続をテストするコードは次のとおりです。

エラーログはこちら。このような問題を解決するにはどうすればよいですか?

エラーログ :

PHP 致命的なエラー: キャッチされない例外 'PhpAmqpLib\Exception\AMQPRuntimeException' とメッセージ 'サーバーへの接続エラー (13): 許可が拒否されました' が /var/www/html/mydir/vendor/videlvaro/php-amqplib/PhpAmqpLib/Wire/IO にある/StreamIO.php:27\nスタック トレース:\n#0 /var/www/html/mydir/vendor/videlvaro/php-amqplib/PhpAmqpLib/Connection/AMQPStreamConnection.php(21): PhpAmqpLib\Wire\IO\StreamIO- >__construct('ip アドレス', 15672, 3, 3, NULL)\n#1 /var/www/html/mydir/send.php(13): PhpAmqpLib\Connection\AMQPStreamConnection->__construct('ip アドレス', 15672, 'guest', 'guest')\n#2 {main}\n 27 行目の /var/www/html/mydir/vendor/videlvaro/php-amqplib/PhpAmqpLib/Wire/IO/StreamIO.php でスローされます