Коллеги, использую aio-pika (python), для работы с rabbitmq использую connect_robust, чтобы

происходил реконнект
сообщения обрабатываю через метод IncomingMessage.process
но, когда соединение рвется, то обрабатываемое сообщение теряется, как я понимаю из-за закрытия канала в коннекте
робуст при реконнекте, почему то создает новый канал, а не поднимает старый
В доке информации очень скудно, в гугл правильный запрос подобрать немогу((
Думал поискать в коде, но там не нахожу каких-то методов для гарантированной отпраки

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

2 ответов

72 просмотра

Что значит теряется? В процессе выполнения хендлера не обрабатывается? Не возвращается в очередь? Что значит точно отправилось? Отправка это публиш, а обработка это консьюм.

Patsy-Charmer Автор вопроса
Aleksey Barabanov
Что значит теряется? В процессе выполнения хендлер...

Я получил сообщение, начинаю его обработку. я делаю так: async with message.process(ignore_processed=True, reject_on_redelivered=True): result = await some_logic(message.body) await exchange.publish(result, ..) соединение рвется во время выполнения some_logic и до отправки еще не дошли по идее с флагом ignore_processed исключение не должно влиять на обработку сообщения, но обработка прерывается с логом Reject is not sent since channel is closed По идее, как я понял, я могу пометить сообщение аск, сколько угодно готовить ответ и отправить его (паблиш), в тот канал, что будет доступен на момент отправки в нужный обменник.

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

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

Version: v2.9.3 часто стало падать с ошибкой werf plan │ platform: linux/amd64,linux/arm64 └ 🏗️ image pilot (0.61 seconds) └ 🏗️ image oauth2_proxy (0.63 seconds) panic: run...
Sergey Sokolov
8
Кажется сломалась сборка в докере docker run --pull always --rm -it registry.werf.io/werf/werf:2-stable werf version ...
Evgeniy Medvedev
1
Вопрос к werf напрямую не относится, но всё же: есть хелм чарт, в нём есть лейблы, они используются для селекторов. Как их поменять ? Т.е. если просто поменять, удалить чарт ...
Anton Warm
5
Добрый день! Как-то можно заставить buildah не выводить каждую bash команду на экран? Иначе он мои секреты из heredoc показывает в консоли Github. А так как werf переносы стро...
Vyacheslav
1
Блин а мне как поумнеть ?
Toxin
191
с gcr похоже не очень корректно работает. если задать WERF_REPO_CONTAINER_REGISTRY="gcr" и WERF_REPO=us-central1-docker.pkg.dev/infra-430406/asi-hello-world тогда получаю ошиб...
Sergey Sokolov
1
Коллеги, здравствуйте. Подскажите пожалуйста. Используем версию werf v2.6.3. И стали у нас выходить в консоли вот такие "WARNINGS" как их отключить вообще? └ Adding custom ta...
vⱥ𝖉iϻ ϻⱥlͥтsͣeͫv♛
1
Всем привет! Сорри за назойливость 😄 Я пришел с предложением: 1. Мы юзаем вендор чарты, но тащим чарт к нам в репу, билдим их образы с помощью также werf, создаем dockerfile, ...
Danil Ivanov
1
Всем привет 👋 Подскажите пожалуйста, а чего тут не хватает permission или образ битый? Running with gitlab-runner 17.0.0 (44feccdf) on gitlab-runner-c58775949-d7znz YxYz2zp...
Max
2
Через ран я же могу запустить только один образ и запаралелить не могу?
Alex Подрябинкин
10
Карта сайта