Я создал простого издателя и потребителя, который подписывается в очередь, используя 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
Использование сообщений о неподтверждении от RabbitMq ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1730288365
Anonymous
Я создал простого издателя и потребителя, который подписывается в очередь, используя Basic.consume.
Мой потребитель подтверждает сообщения, когда задание выполняется без исключений. Всякий раз, когда я сталкиваюсь с исключением, я не подтверждаю сообщение и возвращаюсь раньше. Из очереди исчезают только подтвержденные сообщения, так что это работает правильно.
Теперь я хочу, чтобы потребитель снова получал неудавшиеся сообщения, но единственный способ повторно обработать эти сообщения — перезапустить потребителя. .
Как мне следует подойти к этому варианту использования?
[b]Код установки[/b]< /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');
[b]Код потребителя[/b]
$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());
}
[b]Код производителя[/b]
$exchange->publish('message');
Подробнее здесь: [url]https://stackoverflow.com/questions/17654475/consuming-not-acknowledge-messages-from-rabbitmq[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия