Есть ли способ передачи данных со 100% гарантией доставки с использованием RabbitMQ?
Я строю систему, в которой я хотел бы использовать RabbitMQ в качестве основного механизма передачи сообщений.
Моя система требует очень строгих гарантий доставки сообщений, так как сообщения должны поступать в пункт назначения и подтверждаться, в противном случае я ожидаю, что они будут поставлены в очередь и повторно доставлены.
Вариант использования поддерживает конечную согласованность между двумя системами
Я также хотел бы избежать необходимости управлять каким-либо состоянием сообщений в моем приложении.
Я знаю, что публикация постоянного сообщения не дает 100% гарантии того, что оно было сохранено на диске, потому что fsync(2) вызывается не для каждого сообщения.
таким образом, мой вопрос - могу ли я использовать RabbitMQ в качестве 100% надежного * механизма передачи сообщений?
Я читал о транзакциях, но не смог найти ничего, кроме поста в блоге 2011 года, в котором также явно не указано, что fsync(2)
выполняется для каждого сообщения, или что (синхронный) сбой происходит, если это не удается.
* Под надежным я подразумеваю, что сообщения должны в конечном итоге доставляться всегда. повторяющиеся сообщения являются приемлемыми.
1 ответ
Могу ли я использовать RabbitMQ в качестве 100% надежного механизма передачи сообщений?
Да, используйте постоянные сообщения, подтверждение издателя и подтверждение потребителя - ссылка.
Когда ваш издатель получает подтверждение, сообщение было записано и синхронизировано на диск.
ПРИМЕЧАНИЕ: команда RabbitMQ контролирует rabbitmq-users
список рассылки и только иногда отвечает на вопросы по Stackru.