В разрушителе LMAX, Как производитель знает, что потребитель закончил работу

Есть ли потребители информировать производителя о том, что какое-то конкретное событие успешно обрабатывается?

3 ответа

Не могли бы вы не просто сохранить счетчики в вашем производителе (-ях) и потребителе (-ях), счетчик приращения производителя (-ов) перед публикацией, счетчик приращения потребителя (-ей) после обработки, а затем попросить производителя сравнить produced_count с consumed_count?

Вы можете подключить это, если хотите. Что-то вроде

class MyEvent {
  String payload;
  Runnable onComplete;
}

Затем ваш обработчик событий / потребитель / что-нибудь еще запустит onComplete после того, как он обработает полезную нагрузку. Замените runnable на Future или любую другую вещь, которая вам может понравиться, но этот шаблон лучше всего подходит для асинхронных вещей (может быть, runnable устанавливает флаг done в вашем пользовательском интерфейсе?)

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

Непосредственно нет, и, учитывая, что прерыватель предназначен для развязки, выполнение этого сведет на нет все приросты производительности, которые он обеспечивает.

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