0

私は、rabbitMq と videlalvaro/php-amqplib php クライアントを使用して単純なメッセージ サービスを実装しています。しかし、2 つのメッセージを送信すると、受信者は 1 つを失います。何が起こったのでしょうか?使用したコードは以下です。

send.php

require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPConnection;
use PhpAmqpLib\Message\AMQPMessage;

$connection = new AMQPConnection('127.0.0.1', 5672, 'guest', 'guest');
$channel = $connection->channel();

$channel->queue_declare('hello', false, false, false, false);

for ($i=0; $i < 10; $i++) { 
    $text = "SEND MESSAGE ".$i;

    $msg = new AMQPMessage($text);
    $channel->basic_publish($msg, '', 'hello');

    echo " [x] SEND MESSAGE ".$i."\n";  
}

$channel->close();
$connection->close();

受信機.php

require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPConnection;

$connection = new AMQPConnection('127.0.0.1', 5672, 'guest', 'guest');
$channel = $connection->channel();

$channel->queue_declare('hello', false, false, false, false);
echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";

$callback = function($msg) {
  echo " [x] Received: ", $msg->body, "\n";
};

$channel->basic_consume('hello', '', false, true, false, false, $callback);

while(count($channel->callbacks)) {
    $channel->wait();
}

$channel->close();
$connection->close();

send.php 出力応答

[x] メッセージ 0 を送信
[x] メッセージ 1 を送信
[x] メッセージ 2 を送信
[x] メッセージ 3 を送信
[x] メッセージ 4 を送信
[x] メッセージ 5 を送信
[x] メッセージ 6 を送信
[x] メッセージ 7 を送信 [x
] ] メッセージ送信 8
[x] メッセージ送信 9

receiver.php 印刷応答

[x] 受信: SEND MESSAGE 1
[x] 受信: SEND MESSAGE 3
[x] 受信: SEND MESSAGE 5
[x] 受信: SEND MESSAGE 7
[x] 受信: SEND MESSAGE 9

4

1 に答える 1

0

同じ問題があり、解決策を探すのに多くの時間を費やしました。最後に、Rabbit Server がインストールされているディスクの空き容量の不足でした。「50MBの透かし」とありましたが、なぜか空き容量が1GB以下でトラブルが発生。メッセージはどこかに行きます。

サーバーログを赤くしてみてください。ヒントが見つかるかもしれません。

于 2015-09-24T09:53:45.810 に答える