2014-02-04 2 views
1

Я пытаюсь настроить Reactor на использование настойчивости на основе Chronicle, и я не могу найти информацию об этом в документации. Я вижу два пути:Как использовать PersistentQueue в реакторе?

  1. Создать свой собственный диспетчеру поддерживающий PersistentQueue
  2. Использование EventBatcher с такой очереди, чтобы обернуть мой Reactor экземпляр

Какой вариант лучше? Или, может быть, есть другое решение, которое я забыл?

ответ

2

Реактор не имеет стойкости, встроенной в объект Reactor (именно поэтому вы не находите документацию на нем :).

Если вы пытаетесь сохранить события, проходящие в целях устойчивости и повтора, вы, вероятно, захотите использовать EventBatcher. У test for EventBatcher есть код, в котором показано, как объединить Observable и PersistentQueue.

Возможность написания собственных PersistentDispatcher, безусловно, интересная. Этот путь будет чреват опасностью, однако, поскольку диспетчерский код неумолимо, когда дело доходит до пропускной способности. Даже самые незначительные изменения могут сильно повлиять на пропускную способность. Мы просто переписали их, чтобы получить больше производительности, поэтому последний код в главном отличается от 1.0 версий Dispatchers.

Я бы не стал рекомендовать брать маршрут Dispatcher. Сначала я попробую EventBatcher, и только если это не может быть использовано в вашем случае использования, я бы экспериментировал с пользовательским Dispatcher. Есть два новых абстрактных базовых класса (here и here), чтобы основывать новые версии Dispatcher, если вы решите пойти по этому маршруту.

+0

Jon - Я хочу использовать Reactor в качестве постоянной шины событий в своем приложении. Как я понимаю, EventBatcher работает как мешок для событий, которые обрабатываются после вызова метода flush()? С такими требованиями я понимаю, что для реализации надежной передачи сообщений было бы лучше реализовать пользовательский диспетчер? –

+0

EventBatcher ушел в реактор 1.1.2 ... –

Смежные вопросы