Асинхронное подтверждение в rabbitmq - PullRequest
0 голосов
/ 28 мая 2018

Сначала позвольте мне рассказать вам о настройках, которые у меня есть.

  1. Прочная и постоянная очередь и обмен.
  2. Ручное подтверждение.
  3. Использование rabbitmq в весенней загрузке.
  4. SimpleMessageListenerContainer с одновременным потребителем 10 и максимальным потребителем 50.

Сценарий проблемы состоит в том, что я отправляю сообщение m1, а затем m2.m1 требует времени для обработки.м2 процесс заканчивается до m1.Здесь для m1 и m2 теги доставки совпадают с 1. Таким образом, сообщение m2 получает подтверждение до m1, а когда m1 получает подтверждение, я получаю неизвестное исключение тега доставки 1.

Удивительно, но сообщение m1 ack также получено производителем.Но проблема в том, что в консоли администратора RMQ долгое время проблема в том, что m1 руки не были распакованы.

Возможно ли в RMQ, что я могу подтвердить м2 до m1?Я знаю, что оба сообщения находятся на том же канале и в той же очереди.Дело в том, что я не могу гарантировать, что оба сообщения будут доставлены в отдельные очереди.

1 Ответ

0 голосов
/ 28 мая 2018

Если у них одинаковый тег доставки, они доставлялись по разным потокам / каналам - теги доставки ограничены на уровне канала.Похоже, вы пытаетесь подтвердить m1 на неправильном канале.

Удивительно, но сообщение m1 ack также получено производителем.

Я не знаю, что вы подразумеваете подчто - потребительские квоты не идут производителям;потребители и производители независимы.Подтверждения производителя полностью отличаются от подтверждений пользователя.

Рекомендуется не отправлять подтверждения в другом потоке;каналы не безопасны для потоков .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...