#apache-kafka #cqrs #event-sourcing
#apache-kafka #cqrs #источник событий
Вопрос:
Все больше и больше статей рассказывают о kafka как о хранилище событий и использовании его в приложении, созданном с помощью cqrs amp; event sourcing. Как вы запрашиваете kafka (как хранилище событий) для событий определенного агрегата, чтобы выполнить операцию на стороне записи?
Ответ №1:
Вы можете использовать потоки Kafka (http://docs.confluent.io/current/streams/index.html ) для вычисления совокупности данных, хранящихся в Kafka. В следующем выпуске (голосование уже продолжается) Kafka Streams добавляет новую функцию под названием Интерактивные запросы, которая позволяет вам запрашивать текущее значение каждого агрегата в любое удобное для вас время.
Пока смотрите проектный документ (все еще со старым названием функций «Запрашиваемое состояние»). https://cwiki.apache.org/confluence/display/KAFKA/KIP-67: Запрашиваемое состояние для Потоков Kafka
После выпуска появится подробная документация о том, как работают интерактивные запросы. Если у вас есть дополнительный вопрос прямо сейчас, просто продолжайте.
Комментарии:
1. Есть ли какой-либо пример того, как использовать kafka и запрашиваемое состояние? Должны ли все события быть на одну и ту же тему? У одного агрегата может быть несколько типов событий, и я предполагаю, что у каждого события будет своя тема.
2. Есть ли какой-либо пример того, как использовать kafka и запрашиваемое состояние? Должны ли все события быть на одну и ту же тему? У одного агрегата может быть несколько типов событий, и я предполагаю, что у каждого события будет своя тема. И чтобы запросить состояние определенного агрегата, нам нужно объединить результаты всех этих событий по порядку. Я неправильно использую Kafka?
3. Вот два примера: github.com/confluentinc/examples/blob/master/kafka-streams/src /… и github.com/confluentinc/examples/blob/master/kafka-streams/src/… (Этот репозиторий также содержит другие примеры потоков Kafka).
4. Состояние предназначено для одного оператора. Если у вас разные типы, вы все равно можете создать свой собственный составной тип, чтобы передавать все ваши данные одному и тому же оператору. То же самое верно и для темы. Для Kafka данные состоят только из байтов — таким образом, если вы предоставляете пользовательский де / сериализатор, вы также можете записать другой тип в одну тему. (Не совсем уверен, что вы имеете в виду во второй части вашего вопроса. Может быть, вы хотите следить за списком рассылки Confluent или Kafka? groups.google.com/forum /#!форум/confluent-платформа или kafka.apache.org/contact )