Я работаю над работником, который способен обрабатывать сообщение из RabbitMQ.Как разместить сообщение в конце очереди MQRabbit
Однако я не уверен, как это осуществить.
Если я получаю сообщение, и во время моего лечения возникает ошибка, как я могу поместить сообщение в конец очереди?
Я пытаюсь использовать nack или reject, но сообщение всегда переставляется в первую позицию, а другие сообщения остаются замороженными!
Я не понимаю, почему сообщение должно быть помещено в первую позицию, я пытаюсь «играть» с другими вариантами, такими как Requeue или AllupTo, но ни один из них не работает.
Спасибо заранее!
Зачем нужно обрабатывать сообщения ack() и с ошибками? Подтверждение должно быть костью после обработки сообщения, иначе, если что-то пойдет не так, как раньше или во время его обработки или публикации снова это сообщение будет потеряно и удалено из очереди. Вы должны отклонить сообщение и принять решение, если хотите отменить или отменить это сообщение. –
Все зависит от бизнес-требований, когда ack() сообщение до или после обработки. Мы можем отправить сообщение обратно в очередь, если какая-либо ошибка/исключение происходит в качестве последнего кода восстановления после отказа, прежде чем скрипт получит die/exit. Если есть несколько сценариев, по которым мы хотим разместить сообщение в конце очереди, а не для всех, то мы можем сохранить ack()/nack()/republish после обработки. Мы можем решить в конце либо ack/nack, либо переиздать сообщение в конце обработки. –