0

RabbitMQ サーバーからのメッセージを消費する php-amqplib を使用する php デーモンがあります。要点は次のとおりです (ただし、それよりも少し複雑です)。

$callback = function (AMQPMessage $msg) {
    echo "Handling event: some event name here";
    try {
      //some custom logic here
    } catch (\Throwable $e) {
      //write error in a log here
    }
    
    $msg->ack();
};

$channel = $this->connection->channel();
$channel->basic_qos(null, 1, null);

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

$this->wait($channel);

while ($channel->is_open()) {
   $channel->wait();
}

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

バックグラウンドで実行すると、イベントを処理し、出力とエラーをさまざまなログに書き込みます。RabbitMQ コントロール パネルで、キューにコンシューマーがあることを確認できます。エラー ログと出力ログの両方にメッセージが表示されず、RabbitMQ コントロール パネルには、キューのコンシューマーが 0 であることが示されますが、プロセスは何らかの形でまだ実行されています。

4

1 に答える 1