澄清:请注意,这个问题与这个问题不同:How to implement a microservice Event Driven architecture with Spring Cloud Stream Kafka and Database per service
这个是关于使用Kafka 作为唯一的存储库(事件),不需要数据库,另一个是关于每个服务使用一个数据库(MariaDB)+ 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 代理?想象一下,我想按用户/日期、状态等搜索订单。