Я строю систему, в которой я хотел бы использовать RabbitMQ в качестве основного механизма передачи сообщений.
Моя система требует очень строгих гарантий доставки сообщений, например: должны прибыть в пункт назначения и получить подтверждение,
в противном случае я ожидаю, что они будут поставлены в очередь и восстановлены.
Вариант использования поддерживает конечную согласованность между двумя системами
Я бы также хотел избежать какого-либо состояния, касающегося сообщений в моем приложении.
Я знаю, что публикация постоянного сообщения не дает 100% гарантии того, что оно было сохранено на диске, потому что fsync (2) вызывается не для каждого сообщения.
Таким образом, мой вопрос - Могу ли я использовать RabbitMQ в качестве 100% надежного * механизма передачи сообщений?
Я читал о транзакциях, но не смог найти ничего, кроме 2011 blogpost , в котором также явно не указано, что fsync(2)
выполняется для каждого сообщения или что (синхронно) сбой происходит, если это не удается.
* под надежным я имею в виду, что сообщения должны в конечном итоге доставляться всегда. допустимы повторяющиеся сообщения.