我对轴突很陌生。我有以下查询。我运行2微服务,即支付和订购使用卡桑德拉作为事件商店和卡夫卡。来自支付微型服务。我正在从eventGateway发送一个事件
@Component
@ProcessingGroup("OrderProcessor")
public class OrderEventHandler {
@Inject
private EventGateway eventGateway;
public void createOrder() {
OrderCreatedEvent orderCreatedEvent = new OrderCreatedEvent("orderId",
100,
"CREATED");
eventGateway.publish(orderCreatedEvent);
}
此外,我还配置了SagaViewRepository的sagaStore和存储库组件。
@Repository
public interface SagaViewRepository extends CassandraRepository<SagaView, String> {
}
SagaStore
public CassandraSagaStore sagaStoreStore() {
return CassandraSagaStore(...);
}
如何在OrderCreatedEvent订单微服务中的SagaEvent侦听器中侦听上述事件()。以下是实施情况
@Saga(sagaStore = "sagaStoreStore")
public class OrderManagementSaga {
@Inject
private transient CommandGateway commandGateway;
@StartSaga
@SagaEventHandler(associationProperty = "orderId")
public void handle(OrderCreatedEvent orderCreatedEvent){
//Saga invoked;
}
任何提示都是非常感谢的谢谢。
发布于 2021-02-01 01:08:12
实际上,在任何项目中,我都不会立即选择微服务路线。如果您正在走这条路线,这意味着您陷入了基础设施工作中,比如如何从一个服务发送消息到另一个服务,而不是提供业务功能。
这并不意味着我不会在您的应用程序中使用消息传递。命令、事件和查询的用法允许您将消息总线的距离更改为任何长度。
无论如何,这是一个更多的建议,而不是你的问题的答案。老实说,我不知道你在找什么。你已经说过你在使用卡桑德拉(顺便说一句,这不是来自Axon内部的支持)和卡夫卡。这使得卡夫卡成为你在服务之间发布事件的方式,对吗?例如,这就是Axon提供Kafka扩展的目的。
请注意,采用此路由将要求您为命令、事件和查询分发以及事件存储定义不同的基础结构。此外,正如前面所指出的,Axon并不认为Cassandra是最佳事件存储库。如果你想知道为什么我会建议你看看这份报告。
与其进行“隔离的基础设施定制”,我建议尝试一下,它是一家一站式商店,可以分发命令、事件和查询,也是一个完全优化的事件存储区。有一件事是肯定的,你不必真正考虑“如何将一个事件从您的支付服务发送到您的订单服务中。”只要您的Axon应用程序连接到Axon Server (这也很容易),它就会这样做。如果您想了解更多关于Axon的信息,Axon的参考指南有一个专门的章节,您可以阅读这里。
如果你觉得卡夫卡是走的路,那当然也没问题。这意味着你或你的团队有更多的工作要做。所以你得把那些工时算进去。有关如何为事件分发设置Axon的Kafka扩展的更多信息,您可以查看这参考指南页面。请注意,Kafka只会为您带来事件分发。因此,您仍然需要解决命令分发、查询分发和事件存储的问题。
https://stackoverflow.com/questions/65953167
复制相似问题