Имеем: 2 очереди - messages и error_messages, при ошибке сообщение падает в error_message, у каждого сообщения есть уникальный ID.
Бизнес процесс такой: администратор мониторит error_messages, делает правки по конкретному сообщению и обратно перезапускает обработку переместив конкретное сообщение обратно в очередь messages.
Сейчас это реализовано в MsSql.
Вопрос: Возможно ли в rabbitmq, перенести только одно сообщение из одной очереди в другую?
p.s. Есть команда Move messages, но она переносит все сообщения, что расточительно, нужно перенести только одно сообщение.
Администратор читает сообщение из очереди с ошибками указывая requeue: false. Далее в зависимости от ситуации сообщение нужно отправить либо обратно в эту же очередь или в другую очередь с задачами.
Можно сделать это автоматизированно, при возникновении ошибки, сообщение попадает в dead letter exchange (DLX), так оно по routing key попадает в очередь в которой может пролежать столько сколько нужно, а потом само вернуться в очередь с задачами, это удобно при возникновении временных ошибок и необходимости гарантии доставки сообщений. Плюс ко всему удобно мониторить очередь отстойника (если она начала расти, то что-то пошло не так).
Подробнее о DLX можно почитать тут:
https://www.rabbitmq.com/dlx.html
https://habr.com/ru/post/235505/
Очередь на то и очередь чтобы выдавать сообщения последовательно, нельзя просто так сказать "Эй ты сообщение под номером 101 иди на обработку".В БД такое возможно поменяв значение столбца, но таблицы БД и очередь это разная структура данных.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости