微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Axon 框架 - 从非聚合eventGateway启动传奇

如何解决Axon 框架 - 从非聚合eventGateway启动传奇

我对 axon 很陌生。我有以下查询。我正在运行 2 个微服务,即使用 Cassandra 作为 Event Store 和 Kafka 的 Payment 和 Order。来自 支付微服务。我正在从 eventGateway 调度事件

    @Component
    @ProcessingGroup("OrderProcessor")
    public class OrderEventHandler {
        @Inject
        private EventGateway eventGateway;
        public void createOrder() {
            OrderCreatedEvent orderCreatedEvent = new OrderCreatedEvent("orderId",100,"CREATED");
            eventGateway.publish(orderCreatedEvent);
        }

另外,我已经配置了 sagaStore 和存储库组件 SagaViewRepository

@Repository
 public interface SagaViewRepository extends CassandraRepository<SagaView,String> {
}

SagaStore

public CassandraSagaStore sagaStoreStore() {
    return  CassandraSagaStore(...);
}

如何在 Order 微服务中存在的 SagaEvent 侦听器中侦听上述事件 (OrderCreatedEvent)。下面是实现

    @Saga(sagaStore = "sagaStoreStore")
    public class OrderManagementSaga {

        @Inject
        private transient CommandGateway commandGateway;

        @StartSaga
        @SagaEventHandler(associationProperty = "orderId")
        public void handle(OrderCreatedEvent orderCreatedEvent){
            //Saga invoked;
        }

非常感谢任何提示 谢谢。

解决方法

几乎在任何项目中,我都不会立即走微服务路线。 如果您选择这条路线,则意味着您陷入了基础设施工作中,例如如何将消息从一个服务发送到另一个服务,而不是提供业务功能。

这并不意味着我不会在您的应用程序中使用已有的消息传递。命令、事件和查询的使用允许您将消息总线的距离更改为任意长度。

无论如何,这与其说是对您问题的回答,不如说是建议。 说实话,我不确定你在找什么。您已经声明您正在使用 Cassandra(顺便说一下,Axon 内部不支持)和 Kafka。这使得 Kafka 成为您在服务之间发布事件的手段,对吗?例如,这就是 Axon 提供的 Kafka Extension

请注意,走这条路线需要您为命令、事件和查询调度以及事件存储定义不同的基础设施。此外,正如刚才所指出的,Axon 并不认为 Cassandra 是最佳的 Event Store。如果您想知道为什么我建议您查看 this presentation

而不是去“隔离的基础设施定制 ,我建议您尝试一下 Axon Server。它是分发命令、事件和查询的一站式商店,也是一个完全优化的事件存储。有一件事是肯定的,您不必真正考虑“如何将事件从您的支付服务分派到您的订单服务。只要您的 Axon 应用程序连接到 Axon 服务器(这也是轻而易举)。如果您想了解有关 Axon 服务器的更多信息,Axon 的参考指南有专门的部分,您可以阅读 here

如果您觉得 Kafka 是最佳选择,那当然也可以。这意味着您或您的团队需要做更多的工作。因此,您必须考虑这些工时。有关如何为事件分发设置 Axon 的 Kafka 扩展的更多信息,您可以查看 this 参考指南页面。请注意,Kafka 只会为您带来事件分发。因此,您仍然需要解决命令分发、查询分发和事件存储的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。