РАЗЪЯСНЕНИЯ: Обратите внимание на то, что этот вопрос будет отличаться от этого один: How to implement a microservice Event Driven architecture with Spring Cloud Stream Kafka and Database per serviceКак запросить хранилище событий в microservice Sourcing событий архитектуры с весной Облако поток Кафкой
Это один об использовании Kafka as the only repository (of events), не DB не требуется, Другой - об использовании Database (MariaDB) per service + Kafka.
Я хотел бы реализовать Sourcing архитектуру событий для обработки распределенных транзакций:
OrdersService <------------> | Kafka Event Store | <------------>PaymentsService
subscribe/ subscribe/
find find
OrdersService получает запрос и сохраняет заказ новый заказ в брокере.
private OrderBusiness orderBusiness;
@PostMapping
public Order createOrder(@RequestBody Order order){
logger.debug("createOrder()");
//do whatever
//Publish the new Order with state = pending
order.setState(PENDING);
try{
orderSource.output().send(MessageBuilder.withPayload(order).build());
}catch(Exception e){
logger.error("{}", e);
}
return order;
}
Это мое главное сомнение: как я могу запросить брокера Kafka? Представьте, что я хочу искать заказы пользователем/датой, состоянием и т. Д.
Возможный дубликат [Как реализовать microservice Event Driven архитектуру с Spring Cloud поток Кафки и базы данных в service] (http://stackoverflow.com/questions/42140285/how-to-implement-a-microservice-event-driven-architecture-with-spring-cloud-stre) – spencergibb
Привет Спенсер, я не думаю, что это дублировать. Другой - использование базы данных (MariaDB) за услугу + Kafka. Это касается использования Kafka в качестве единственного репозитория (событий), нет необходимости в БД: http://microservices.io/patterns/data/database-per-service.html vs http://microservices.io/patterns/data /event-sourcing.html – codependent