Ошибка RabbitMQ Consumer: пользовательская функция обратного вызова basi c потребление не может получить сообщение - PullRequest
0 голосов
/ 06 января 2020

как указано в заголовке: факт в том, что когда я запускаю потребительскую задачу, все в порядке. он постоянно потребляет сообщения и отвечает на Mq Broker.

, но через некоторое время функция обратного вызова потребителя больше не может получать сообщение, как будто оно блокируется. результат: сообщение находится в нераспакованном состоянии library

библиотека: php -amqplib / php -amqplib v2.11.0

php код, как показано ниже:

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

$this->channel->basic_consume(
            $this->queue_name,
            '',
            false,
            false,
            false,
            false,
            function (AMQPMessage $msg) use ($callback) {
                $callback($msg);
            }
        );


while ($this->channel->is_consuming()) {
    $this->channel->wait();
}

the consume callback function:


$callback = function (AMQPMessage $msg, $publishRetry, $publishFailed){

  // my question is here, i can't get $msg after a period of time


  try{

      // do something 
      // process msg

      $msg->delivery_info['channel']->basic_ack($msg->getDeliveryTag());

  } catch (\Exception $ex) {
      throw $ex;
  } 

};

...