Как я могу применить функцию тайм-аута к очереди LMAX Disruptor? - PullRequest
1 голос
/ 27 февраля 2012

Разработчикам / пользователям LMAX Disruptor http://code.google.com/p/disruptor/:

Мой вопрос: Может ли кто-нибудь предложить подход к применению функции тайм-аута к Disruptor, например, используя EventHandler?

Здесьодин сценарий, который возник в моей работе:

  1. Исходящие - сообщения, отправленные на Сервер по сети
  2. Входящие - ACK-сообщения, полученные от Сервера
  3. ACK Handler - помечает исходящие сообщения как ACKed
  4. Timeout Handler - помечает исходящее сообщение как NACKed (очень необходимо, но где оно может вписаться в схему Disruptor?)

Есть ли кто-нибудькто разделяет такое же мнение?Или кто-нибудь может указать, почему это не нужно.Я надеюсь, что последующие дебаты будут краткими.

Спасибо.

1 Ответ

0 голосов
/ 05 апреля 2012

Чтобы уточнить, обработчик тайм-аута "сработает" через определенный промежуток времени, когда сообщение не может быть доставлено?

Способ работы с прерывателем заключается в том, что у вас есть кольцевой буфер для входящих и кольцевой буфер для исходящих сообщений ... поэтому электронная почта приходит, помещая ее в буфер входящих звонков, используя соответствующее событие. затем обработать сообщение (т.е. декодировать, проанализировать, записать в журнал, сохранить) и отправить его в другую систему, поместив его в исходящий кольцевой буфер ... другой обработчик принимает сообщение и сохраняет его в базе данных или отправляет его на другой сервер с помощью smtp ... если происходит ошибка / тайм-аут и т. д., вы создаете событие во входящем кольцевом буфере, сигнализирующем об ошибке (NACK), и обрабатываете это сообщение. это имеет смысл?!?

...