Я имею в виду конкретный вариант использования RabbitMQ, и я хотел бы уточнить некоторые вещи и попросить рекомендации.
Рассмотрим этот сценарий:
1 - Я публикую два сообщения, которые являются задачами, которые должны быть выполнены: сообщение A, а затем сообщение B
2 - мой потребитель получает сообщение A, выполняет задачу, содержащуюся в этом сообщении, но во время выполнения задачи происходит сбой сервера
Мой вопрос: когда сервер будет перезагружен, будет ли сообщение A помещено в очередь и будет ли оно помещено в очередь перед сообщением B (в том же порядке, что и до сбоя)?
Насколько я понимаю, сообщение A было бы потеряно в случае сбоя сервера, поскольку мой потребитель подтвердил его по умолчанию при получении сообщения.
Так что моя идея состоит в том, чтобы получать и подтверждать сообщение отдельно: сначала использовать, запустить задачу, а затем подтвердить сообщение, когда задача была успешно выполнена.
Видите ли вы проблему с этим подходом? Вы бы посоветовали мне сделать что-нибудь еще?