首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >轴突框架-从非聚合体(eventGateway)启动saga

轴突框架-从非聚合体(eventGateway)启动saga
EN

Stack Overflow用户
提问于 2021-01-29 10:59:00
回答 1查看 268关注 0票数 0

我对轴突很陌生。我有以下查询。我运行2微服务,即支付和订购使用卡桑德拉作为事件商店和卡夫卡。来自支付微型服务。我正在从eventGateway发送一个事件

代码语言:javascript
运行
复制
    @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和存储库组件。

代码语言:javascript
运行
复制
@Repository
 public interface SagaViewRepository extends CassandraRepository<SagaView, String> {
}

SagaStore

代码语言:javascript
运行
复制
public CassandraSagaStore sagaStoreStore() {
    return  CassandraSagaStore(...);
}

如何在OrderCreatedEvent订单微服务中的SagaEvent侦听器中侦听上述事件()。以下是实施情况

代码语言:javascript
运行
复制
    @Saga(sagaStore = "sagaStoreStore")
    public class OrderManagementSaga {

        @Inject
        private transient CommandGateway commandGateway;

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

任何提示都是非常感谢的谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-01 09:08:12

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

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

无论如何,这是一个更多的建议,而不是你的问题的答案。老实说,我不知道你在找什么。你已经说过你在使用卡桑德拉(顺便说一句,这不是来自Axon内部的支持)和卡夫卡。这使得卡夫卡成为你在服务之间发布事件的方式,对吗?例如,这就是Axon提供Kafka扩展的目的。

请注意,采用此路由将要求您为命令、事件和查询分发以及事件存储定义不同的基础结构。此外,正如前面所指出的,Axon并不认为Cassandra是最佳事件存储库。如果你想知道为什么我会建议你看看这份报告

与其进行“隔离的基础设施定制”,我建议尝试一下,它是一家一站式商店,可以分发命令、事件和查询,也是一个完全优化的事件存储区。有一件事是肯定的,你不必真正考虑“如何将一个事件从您的支付服务发送到您的订单服务中。”只要您的Axon应用程序连接到Axon Server (这也很容易),它就会这样做。如果您想了解更多关于Axon的信息,Axon的参考指南有一个专门的章节,您可以阅读这里

如果你觉得卡夫卡是走的路,那当然也没问题。这意味着你或你的团队有更多的工作要做。所以你得把那些工时算进去。有关如何为事件分发设置Axon的Kafka扩展的更多信息,您可以查看参考指南页面。请注意,Kafka只会为您带来事件分发。因此,您仍然需要解决命令分发、查询分发和事件存储的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65953167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档