Есть ли способ передачи данных со 100% гарантией доставки с использованием RabbitMQ?

Я строю систему, в которой я хотел бы использовать RabbitMQ в качестве основного механизма передачи сообщений.

Моя система требует очень строгих гарантий доставки сообщений, так как сообщения должны поступать в пункт назначения и подтверждаться, в противном случае я ожидаю, что они будут поставлены в очередь и повторно доставлены.

Вариант использования поддерживает конечную согласованность между двумя системами

Я также хотел бы избежать необходимости управлять каким-либо состоянием сообщений в моем приложении.

Я знаю, что публикация постоянного сообщения не дает 100% гарантии того, что оно было сохранено на диске, потому что fsync(2) вызывается не для каждого сообщения.

таким образом, мой вопрос - могу ли я использовать RabbitMQ в качестве 100% надежного * механизма передачи сообщений?

Я читал о транзакциях, но не смог найти ничего, кроме поста в блоге 2011 года, в котором также явно не указано, что fsync(2) выполняется для каждого сообщения, или что (синхронный) сбой происходит, если это не удается.

* Под надежным я подразумеваю, что сообщения должны в конечном итоге доставляться всегда. повторяющиеся сообщения являются приемлемыми.

1 ответ

Решение

Могу ли я использовать RabbitMQ в качестве 100% надежного механизма передачи сообщений?

Да, используйте постоянные сообщения, подтверждение издателя и подтверждение потребителя - ссылка.

Когда ваш издатель получает подтверждение, сообщение было записано и синхронизировано на диск.


ПРИМЕЧАНИЕ: команда RabbitMQ контролирует rabbitmq-users список рассылки и только иногда отвечает на вопросы по Stackru.

Другие вопросы по тегам