Использование сообщений о неподтверждении от RabbitMqPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Использование сообщений о неподтверждении от RabbitMq

Сообщение Anonymous »

Я создал простого издателя и потребителя, который подписывается в очередь, используя Basic.consume.

Мой потребитель подтверждает сообщения, когда задание выполняется без исключений. Всякий раз, когда я сталкиваюсь с исключением, я не подтверждаю сообщение и возвращаюсь раньше. Из очереди исчезают только подтвержденные сообщения, так что это работает правильно.

Теперь я хочу, чтобы потребитель снова получал неудавшиеся сообщения, но единственный способ повторно обработать эти сообщения — перезапустить потребителя. .

Как мне следует подойти к этому варианту использования?

Код установки< /p>

$channel = new AMQPChannel($connection);

$exchange = new AMQPExchange($channel);

$exchange->setName('my-exchange');
$exchange->setType('fanout');
$exchange->declare();

$queue = new AMQPQueue($channel);
$queue->setName('my-queue');
$queue->declare();
$queue->bind('my-exchange');


Код потребителя

$queue->consume(array($this, 'callback'));

public function callback(AMQPEnvelope $msg)
{
try {
//Do some business logic
} catch (Exception $ex) {
//Log exception
return;
}
return $queue->ack($msg->getDeliveryTag());
}


Код производителя

$exchange->publish('message');


Подробнее здесь: https://stackoverflow.com/questions/176 ... m-rabbitmq
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»