Всем здравствуйте!) У меня такой вопрос. Есть два роута, роут1 и роут2.

Они связаны с очередью some_queue.
По задаче предполагается, что есть два паблиша.
Паблиш1 отправляет body с роутом роут1 , а паблиш 2 отправляет совсем иное содержимое body с rout2

Консьюмер 1 чекает какой роут если роут1 то мой код отрабатывает задачу и подтверждает получение сообщения роута1, а роут2 должен игнориться и должен возвращаться в очередь.
НО
После отработки, консьюмер1 стоит ждёт новых сообщений, но при этом сообщения с роутом2 не возвращает пока соединения консьюмера1 не закроешь.

Из-за этого Консьюмер2 не может получить сообщения с роутом2

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

10 ответов

41 просмотр

Это кривая архитектура - вам надо вашему консьюмеру то что ему надо давать, а другому (для другого типа) делайте свою очередь - вы не можете пропустить сообщение, но оставить его в той же очереди

Format- Автор вопроса
Dmitry
Это кривая архитектура - вам надо вашему консьюмер...

Я это предложил боссу. Сказал ничего не трогай и прав лишил 😂

Format- Автор вопроса
Dmitry
Это кривая архитектура - вам надо вашему консьюмер...

Aio-pika Есть метод IncomingMessage.reject(requeue: bool = true) Но я не понял его смысл Он просто в очередь возвращает сообщение, но при этом получается вечный цикл с этим сообщениями с роут2 Он прогоняет их и возражает и снова берет Думал может есть что то такое Более подходящее https://aio-pika.readthedocs.io/en/latest/apidoc.html#aio_pika.IncomingMessage.reject

Format
Aio-pika Есть метод IncomingMessage.reject(requeue...

Разве после этого метода вы повторно не получите тоже сообщение? А , дочитал про цикл

Format- Автор вопроса
Dmitry
Разве после этого метода вы повторно не получите т...

Вот я и пишу, что там вечный цикл получается 😂😂😂

Format- Автор вопроса
Dmitry
Ну так то не решение ))

Ну мож более опытные подскажут вот и написал сюда Я с реббитом знаком второй день 🙄

Format
Ну мож более опытные подскажут вот и написал сюда ...

очередь фифо, и когда вы делаете нак - это вот этот метод reject(c флагом тру) - вы возвращаете сообщение в очередь так как консьюмер его не обработал - соответственно его скипнуть не получится, дайрект эксчендж может роутить в две очереди сообщения

Format- Автор вопроса
Tim Tim
очередь фифо, и когда вы делаете нак - это вот это...

Т.е. нужно все же для роута2 создать отдельную очередь, верно я вас понял?)

Похожие вопросы

Обсуждают сегодня

Подскажите пожалуйста, а я могу вот такую штуку использовать? rpc, только реализованное в реббите https://www.rabbitmq.com/tutorials/tutorial-six-php ( или https://habr.com/ru...
Artyom
11
приветствую. Я заметил такую тему, если был собран Dockerfile с 1 версией например werf. Но при запуске образа, werf скачивает новый релиз сама автоматом. drwxr-xr-x 3 root ro...
vⱥ𝖉iϻ ϻⱥlͥтsͣeͫv♛
1
Всем привет 👋 Подскажите пожалуйста, а чего тут не хватает permission или образ битый? Running with gitlab-runner 17.0.0 (44feccdf) on gitlab-runner-c58775949-d7znz YxYz2zp...
Max
2
Вот этот метод, который создает соединения, он как часто вызывается и по каким причинам?
Владислав Килин
9
В смысле, с какой целью вы хотите поменять сообщение?
Владислав Килин
3
Реально ли сделать reject в консюминге так, чтобы сообщение вернулось в очередь измененным? Изменить какой-нибудь параметр в json, допустим. Или же лучше делать ack, и паблиши...
Sergey
1
Коллеги, у меня тут возникла одна очень интересная задачка. Есть один бандл, который содержит в себе 2 типа образов - бэкенд и фронтенд. Выкатываются последовательно, сперва б...
სერგეი ქრისტოვი
12
Коллеги, добрый день! Подскажите, пожалуйста, постоянно валится сообщение об ошибке следующего характера. Куда можно покопать? Брокер точно доступен и сообщения приходят, но н...
Игорь
5
Привет. Почему может RabbitMQ через эндпойнт :15692/metrics/detailed?family=queue_metrics не выдавать метрик по конкретной очереди (выдавать нули)? кластер кроля в кубере сост...
Vlad
4
У меня вопрос по поводу семантики shovel и federation. Вот тут я вижу параметр, отвечающий за надёжность сообщений. И я вижу, что если я поставлю on-confirm, то сообщения не д...
Илья Быконя
3
Карта сайта