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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @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
代码运行次数:0
运行
AI代码解释
复制
@Repository
 public interface SagaViewRepository extends CassandraRepository<SagaView, String> {
}

SagaStore

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public CassandraSagaStore sagaStoreStore() {
    return  CassandraSagaStore(...);
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    @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 01: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

复制
相关文章
使用lsblk命令列出系统中的块设备
中的lsblk 用于列出有关所有可用块设备的信息,但它不会列出有关RAM Disk的信息(其数据实际存储在RAM内存之中)。块设备一般包括硬盘、网络存储、usb存储,光盘等
用户1685462
2021/09/05
1.1K0
如何使用 Systemctl 列出 Linux 中的所有服务?
在 Linux 系统中,Systemctl 是一个强大的工具,用于管理系统的服务和守护进程。它可以让用户轻松地启动、停止、重启以及管理各种系统服务。本文将详细介绍如何使用 Systemctl 来列出 Linux 中的所有服务。
网络技术联盟站
2025/01/16
3050
如何使用 Systemctl 列出 Linux 中的所有服务?
ceph块设备使用iscsi
Ceph 块设备(也叫RBD)服务提供了大小可调、精炼、支持快照和克隆的块设备。为提供高性能, Ceph 把块设备条带化到整个集群。 Ceph 同时支持内核对象( KO ) 和 QEMU 管理程序直接使用 librbd ——避免了内核对象在虚拟系统上的开销。
summerking
2023/04/27
1.3K0
如何使用 systemctl 命令列出 Linux 中的所有服务
systemctl 命令是 Linux 中用于管理系统和服务配置的工具。您可以使用 systemctl 命令来启动、停止、重新启动、启用、禁用和检查服务的状态。您还可以使用 systemctl 命令来列出所有服务。
用户8418197
2023/09/22
2.5K0
列出spring security的所有SecurityFilterChain
spring-security-config-4.1.4.RELEASE-sources.jar!/org/springframework/security/config/http/HttpSecurityBeanDefinitionParser.java
code4it
2018/09/17
8530
通过libvirt使用ceph块设备
[root@ceph1 ~]# qemu-img convert -f qcow2 -O raw centos6864.qcow2.img rbd:libvirt-pool/centos6864.qcow2.img
Laikee
2022/04/25
9900
php列出目录下的所有文件
function myDir($dir = __file__) { // 定于需要列出的目录地址 //$dir = dirname(__file__); // 用 opendir() 打开目录,失败则中止程序 $handle = @opendir($dir) or die("Cannot open " . $dir); echo "<b>Files in " . $dir . ":</b><br>"; // 用 readdir 读出文件列表 while
零式的天空
2022/03/02
2.2K0
使用VBA在工作表中列出所有定义的名称
有时候,工作簿中可能有大量的命名区域。然而,如果名称太多,虽然有名称管理器,可能名称的命名也有清晰的含义,但查阅起来仍然不是很方便,特别是想要知道名称引用的区域时,如果经常要打开名称管理器查找命名区域,会非常麻烦,也浪费时间。
fanjy
2022/11/16
6.6K0
Bash 脚本列出前缀中的所有 IP
例子 ./cidr-to-ip.sh [OPTION(only one)] [STRING/FILENAME] -h 显示此帮助屏幕 -f 在给定 STRING(s) 时强制检查网络边界 -i 将从输入文件中读取(文件每行应包含一个 CIDR)(无网络边界检查) -b 与 -i 相同,但具有网络边界检查 #!/bin/bash ############################ ## Methods ############################ prefix_
Khan安全团队
2022/01/05
2.2K0
004.Ceph块设备基础使用
注意:若使用ceph-deploy部署的时候出现安装包无法下载,可在部署时候指定ceph.repo为国内源:
木二
2019/07/01
6720
004.Ceph块设备基础使用
字符设备与块设备的区别
块设备:系统中可以随机访问(不按顺序访问)数据,这种设备称为块设备。比如我们常用的磁盘就是一种典型的块设备。
DragonKingZhu
2022/05/08
1.6K0
列出用户窗体中所有控件
你需要将代码中用户窗体名称UserForm1修改为你想要列出控件的用户窗体实际名称,将工作表名称Sheet1修改为你想要放置所列控件名称的工作表实际名称。
fanjy
2024/04/12
1310
列出用户窗体中所有控件
HDFS——如何列出目录下的所有文件
可以用bin/Hadoop fs -ls 来读取HDFS某一目录下的文件列表及属性信息。
星哥玩云
2022/06/30
3.9K0
Oracle数据库列出所有表
可以使用下面的命令来列出当前用户所有的表 select * from tab; select table_name from user_tables; 如果想列出所有的表,可以使用 select table_name from all_tables; ---- Previous Oracle数据库建立表空间、用户以及授权 Next Oracle导入数据
EltonZheng
2021/01/26
1.8K0
OpenStack列出当前租户所有的网络
命令:neutron net-list [root@controller ~]# neutron net-list
院长技术
2020/06/13
9810
列出Windows域中所有的机器
我所在的部门大概管理了300+台Windows终端,最近开始采用域的方式来进行管理。(别笑我们土,原来手工修改Windows口令太痛苦了。)
大江小浪
2019/02/22
1.6K0
列出Windows域中所有的机器
Linux下块设备缓存之Bcache使用
Bcache是Linux内核块设备层cache,支持多块HDD使用同一块SSD作为缓存盘。它让SSD作为HDD的缓存成为了可能。由于SSD价格昂贵,存储空间小,而HDD价格低廉,存储空间大,因此采用SSD作为缓存,HDD作为数据存储盘,既解决了SSD容量太小,又解决了HDD运行速度太慢的问题。 注:Bcache是从Linux-3.10开始正式并入内核主线的,因此,要使用Bcache,需要将内核升级到3.10及以上版本才行。
Laikee
2022/04/25
6.5K0
OpenStack列出所有的neutron-agent
[root@controller ~]# neutron agent-list neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead. id agent_type host availability_zone alive admin_state_up binary 1d454880-767e-4ef8-b538-1f5b6a1159f3 Linux bridge agent node2
院长技术
2020/06/13
1.2K0
composer show 列出所有可用的软件包
https://getcomposer.org/doc/03-cli.md#show
很酷的站长
2023/02/17
8170
composer show 列出所有可用的软件包
[046]块设备驱动初探
研究IO也很久了,一直无法串联bio和块设备驱动,只知道bio经过IO调度算法传递到块设备驱动,怎么过去的,IO调度算法在哪里发挥作用,一直没有完全搞明白,查看了很多资料,终于对块设备驱动有所理解,也打通了bio到块设备。
王小二
2020/06/08
2.1K0
[046]块设备驱动初探

相似问题

来自net.TCPConn的Golang读取字节数

30

os.File读取方法如何修改golang中的片字节?

12

如何在golang中确定连接的确切字节长度?

175

在golang中基于字节长度的拆分字符串

13

用4个字节作为消息分离从net.TCPConn读取字节

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文