rabbitmq — PHP Ampqlib Consumer Dies: Ошибка чтения данных. Получено 0 вместо ожидаемых 1 байтов

ОК, это часть сценария командной строки Symfony2. Пока скрипт ждет, он умирает с этим исключением.

[PhpAmqpLib\Exception\AMQPRuntimeException]
Error reading data. Received 0 instead of expected 1 bytes

Я искал в Google и нашел упоминание heartbeat и set_time_out, но когда я попытался установить в конструкторе, но вместо этого, когда я изменяю его по умолчанию, он умирает быстрее.

Вот как настроен мой скрипт. для Amqplib аспект этого.

    // Get the configuration options for RabbitMQ
$queueConfig = $this->getApplication()->getKernel()->getContainer()->getParameter("rabbit_mq");

/**
* Callback function for RabbitMQ
* Everything in the callback function must remain in the call back function.
*/
$callback = function($msg)
{
$msgObj = json_decode($msg->body, true);
print_r($msgObj);
};

$connection = new AMQPConnection(
$queueConfig['response']['host'],
$queueConfig['response']['port'],
$queueConfig['response']['username'],
$queueConfig['response']['password'],
'/'
);

$channel = $connection->channel();

$queueName = 'myQueueName';

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

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

Это из AMQPStreamConnection.php, который имеет конструктор. AMQPConnection расширяет AMQPStreamConnection

public function __construct($host, $port,
$user, $password,
$vhost="/",$insist=false,
$login_method="AMQPLAIN",
$login_response=null,
$locale="en_US",
$connection_timeout = 3,
$read_write_timeout = 3,
$context = null)

Мысли о том, как избавиться от ошибки?

0

Решение

Причиной этой проблемы было то, что мы использовали балансировщик нагрузки Amazon, и он разрывал наше соединение через определенный промежуток времени. То, что я сделал, было взломано, чтобы перезапустить потребителя, когда он потерпел неудачу.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]