Pull to refresh

Comments 5

Отличная статья, спасибо)

Прорабатывался ли как-то вопрос с несколькими инстансами сервиса Outbox? Поскольку сообщения из БД вычитываются шедулером, рано или поздно два инстанса прочитают и отправят одно сообщение

Спасибо за отзыв)
Пока я проводил тестирование стартера только на единичных инстансах, поэтому с такой проблемой не сталкивался, но скорее всего при нынешней реализации каждый инстанс будет забирать все сообщения сразу, если у них синхронизируются шедулеры. Я изучу вопрос и подумаю, как это можно реализовать

Welcome to ShedLock

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

Смысл такой же был?

Вы правы насчёт брокера как буфера - это его основная суть, и в этом плане Inbox действительно может казаться лишним звеном.

Но я добавил его не как "ещё один буфер", а скорее как слой контроля на стороне самого сервиса. С его помощью проще разруливать дубли (которые гарантированы при at-least-once), следить за порядком событий и хранить историю обработки для отладки или аудита. Это больше про гарантию работы, чем про необходимость.

Но помимо использования брокеров я буду писать поддержку для REST и реактивного программирования, где гарантированного буфера в лице брокеров нет. Там Inbox становится необходимостью, если мы хотим гарантировать, что ни одно событие не потеряется.

Спасибо, что заглянули в детали!

Sign up to leave a comment.

Articles