происходил реконнект
сообщения обрабатываю через метод IncomingMessage.process
но, когда соединение рвется, то обрабатываемое сообщение теряется, как я понимаю из-за закрытия канала в коннекте
робуст при реконнекте, почему то создает новый канал, а не поднимает старый
В доке информации очень скудно, в гугл правильный запрос подобрать немогу((
Думал поискать в коде, но там не нахожу каких-то методов для гарантированной отпраки
Подскажите, пожалуйста, как мне изменить обработку таким образом, чтобы сообщение точно отправилось, после восстановления соединения?
Простите, если прям не профильно(
Что значит теряется? В процессе выполнения хендлера не обрабатывается? Не возвращается в очередь? Что значит точно отправилось? Отправка это публиш, а обработка это консьюм.
Я получил сообщение, начинаю его обработку. я делаю так: 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 По идее, как я понял, я могу пометить сообщение аск, сколько угодно готовить ответ и отправить его (паблиш), в тот канал, что будет доступен на момент отправки в нужный обменник.
Обсуждают сегодня