【发布时间】:2017-06-27 19:00:56
【问题描述】:
澄清:请注意,此问题与此问题不同:How to implement a microservice Event Driven architecture with Spring Cloud Stream Kafka and Database per service
这个是关于使用Kafka as the only repository (of events),不需要DB,另一个是关于使用Database (MariaDB) per service + Kafka。
我想实现一个事件溯源架构来处理分布式事务:
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 代理?想象一下,我想按用户/日期、状态等搜索订单。
【问题讨论】:
-
嗨 Spencer,我不认为这是重复的。另一个是关于每个服务使用数据库(MariaDB)+ Kafka。这个是关于使用 Kafka 作为唯一的存储库(事件),不需要数据库:microservices.io/patterns/data/database-per-service.html vs microservices.io/patterns/data/event-sourcing.html
标签: apache-kafka spring-cloud microservices spring-cloud-stream spring-kafka