2017-01-02 2 views
1

1) В chronicle queue v4 наиболее test patterns показать некоторую форму DocumentContext.isPresent()busy state checking, когда ExcerptTailer расположен в конце очереди и код ждет для новых записей, чтобы прибыть из ExcerptAppender.хроника событий очереди слушатель

2) Есть ли встроенный механизм очереди летописной для асинхронных appender -> tailer уведомлений, например, что при получении события уведомления, данного tailer гарантировано иметь по крайней мере один вход отправленного appender, готов для чтения?

3) Если нет, то, что рекомендуется шаблон для реализации таких event listener? Пожалуйста, поделитесь рабочим примером?

ответ

2

Рекомендуемый шаблон для реализации шаблона прослушивателя - использовать метод methodReader/methodWriter, который также может следить за отметками времени, когда вы прочитали.

Я предлагаю вам прочитать эти https://vanilla-java.github.io/tag/Microservices/ снизу вверх, начиная с части 1.

Для Tailer, единственный способ это знать, есть сообщение на чтение/опроса конец очереди. Если приложение и tailer находятся в одном процессе, вы можете использовать другой механизм по вашему выбору.

+0

A) re: ** использовать методReader/methodWriter ** - из [часть-2] (https://vanilla-java.github.io/2016/03/24/Microservices-in-the-Chronicle- world-Part-2.html) и [MethodReader.readOne()] (https://github.com/OpenHFT/Chronicle-Wire/blob/master/src/main/java/net/openhft/chronicle/wire/MethodReader .java # L198) кажется, что 'readOne()' семантически идентичен 'isPresent()', т.е. там нет уведомления о событиях или блокировки, правильно? –

+0

B) re: ** в том же процессе вы можете использовать другой механизм ** - в этом случае, что такое 'ExcerptAppender' /' ExcerptTailer' синхронизация контракта? то есть 'appender ... doc.close()' является гарантией того, что 'tailer ... doc.isPresent()' увидит изменение, когда будет сообщено после 'appender ... doc.close()'? –

+0

@AndreiPozolotin правильный. Никаких блокирующих действий нет. –

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