问题标签 [axon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
axon - Axon 分布式查询总线?
在 AxonFramework 中,可以使用消息代理分发事件和命令,例如 RabbitMQ。
我想知道是否可以对查询做同样的事情,我在文档上找不到任何东西......
spring-boot - Axon 向其他微服务发送命令
我将轴突用于 CQRS,Saga 模式。现在我有一个场景,一个微服务向另一个微服务发送命令。我们可以使用 Axon 命令总线处理来做到这一点吗?
java - 将不同类型的事件发布到不同的队列
我正在尝试创建一个简单的微服务项目来学习使用 Axon 框架。
我已经使用以下代码通过 RabbitMQ 设置了消息传递:
我的 application.properties 中的以下内容:
使用此配置,通过 Axon 框架发布的所有事件都将发送到 QueueA。但是现在我想让所有 EventA 事件都转到 QueueA,而所有 EventB 事件都转到 QueueB。我怎样才能做到这一点?
event-sourcing - 如何使用 Axon 在不同的微服务中消费不同的命令?
我有 2 种不同的微服务todo-service和validation-service以及命令类型CreateTodoCommand
和ValidateTodoCommand
.
如果我在一项服务中有一个命令处理程序,而在第二项服务中有另一个命令处理程序,我会No node known to accept
在发送服务不知道的命令时收到异常。
我可以拆分我@CommandHandler
的 s 以将它们用于不同的服务吗?
java - 多个服务之间的 CQRS 事件
我们有一个监听事件的微服务,让我们暂时调用它AuditService
。AuditEvent
它在 rabbitmq 上侦听审计事件 ( )。任何想要调用AuditService
需要创建和解雇的人AuditEvent
。我们AuditEvent
在一个公共模块中共享了 pojo,因此可以共享它。
中有一个事件侦听器,AuditService
用于侦听AuditEvent
来自 rabbitmq 队列的事件。当我们收到一条消息时,我们会对其进行一些处理/验证AuditEvent
,然后将其保存到AuditEntry
数据库表中。
然后我们想发布另一个事件。让我们称之为AuditPublishEvent
。因此,为了做到这一点,我们创建了另一个命令 ( AuditPublishCommand
),该命令反过来触发AuditPublishEvent
. 此事件再次用于队列,任何发布该事件的服务AuditEvent
都会监听它。将有一个服务将其作为电子邮件发送,另一个将其作为推送发送,等等。
目前我们在 AuditService 上所做的是
请注意,最后一部分需要同步,这意味着如果数据库保存失败,我们不想发送电子邮件等。目前这是通过从 中的事件处理程序中调用 commandGateway 来完成的,从 中AuditService
调用 commandGateway 是否正确EventListener
,如果不是,还有什么替代方法?
问题是,这是使用 Axon 框架和弹簧做事的正确方法/最佳实践吗?
domain-driven-design - CQRS/ES - 用户从读取端或写入端登录
我正在使用事件源在 CQRS 中构建用户登录和身份验证。(使用 AXON 框架)
以下是我的模型中的步骤 -
用户注册流程-
2. UserLogin Flow - 我对 UserLogin 有点困惑。
我有两种方法:
第一种方法 -
/li>
但我从未在任何架构图中看到读取端触发和事件并由写入端处理。
那我可以这样做吗?
第二种方法 -
但问题是,我们不能在写入端使用读取端(正如我在 cqrs 架构中阅读和了解的那样)。但由于我使用的是读取端的公共 API,所以我可以认为,它可能是正确的。
那么你们建议采用哪种方法,或者有其他方法可以做到这一点
domain-driven-design - CQRS/ES - 两个限界上下文之间的通信方式
嗨,我有以下情况,
有两个单独的应用程序
- ShopManagament - 这处理商店的注册。包含骨料商店和其他骨料
- NotifyService - 这会发送邮件、短信、通知。包含聚合电子邮件、短信、通知
这两个应用程序都使用带有 DDD 的 CQRS/ES 构建。
用于构建应用程序的技术是带有 Axon 的 Spring 和用于消息传递的使用 RabbitMQ
步骤1 -
通过发出命令 ShopRegisrtraionCommand 来注册商店(当然这个句柄由商店聚合并在事件触发时更改状态),这会触发事件 ShopRegistratedEvent 。
第2步 -
当 shopShopRegistredEvent 被触发时,我有一个 EventHandler 监听 ShopRegistredEvent 并向 NotifyService 发送 SendEmailVerificationCommand(您可以说一个请求或它充当请求)。
第 3 步 -
Shop 聚合也处理相同的命令(SendEmailVerificationCommand),然后 shop 聚合触发事件 MailVerifcationSendedEvent,此事件将 Shop 的验证状态更改为“MailInSendingProcess”。
第 4 步 - 在另一侧 NotifyService 处理该命令(SendEmailVerificationCommand 或 request)并发送邮件,如果电子邮件成功发送,则 NotifyService 触发 VerificationEmailSent。
第 5 步 -
VerificationEmailSentEvent(由 NotifyService 触发)由 ShopManagment 应用程序使用事件侦听器进行侦听,然后此事件侦听器为商店聚合发出 VerificationMailSendedSuccesfullyCommand,然后商店聚合触发事件 VerificationEmailDeliveredEvent,这将更改验证状态“MailDelivered”。
第 6 步 -
如果由于任何原因导致邮件发送失败,NotifyService 会触发另一个事件 VerificationEmailSendingUnsuccessfullEvent,该事件由 ShopManagament 事件侦听器处理,并发出另一个命令 VerificationEmailUnsuccessfull 到商店聚合,然后商店聚合触发事件 VerficationMailSendingFailedEvent,此事件将验证状态的状态更改为“MailSendingFalied ”。
这里两个 BC 使用 request 和 event 进行通信。
问题 -
- 当我在我的应用程序中发送命令时,我们可以将命令发送到其他有界上下文还是有另一种方法。
- 跟踪电子邮件发送的状态是 Shop 聚合的一部分,还是我必须创建另一个聚合,例如 EmailVerifcation,因为我必须使用计划重新发送失败的邮件。
- 如果发生这种情况,还有其他方法可以管理这种事情吗?
axon - Spring boot + axon framework starter + 使用 JGroups 的分布式命令总线
我目前的目标是使用 Spring Boot 启动器构建一个项目,以使用 Jgroups 测试分布式命令。
我在运行时收到此消息:收到未知消息:org.axonframework.jgroups.commandhandling.JoinMessage
它来自 org.axonframework.jgroups.commandhandling.JGroupsConnector
当前 POM
控制台输出
应用
应用程序.properties
这就像同时有两个类定义。感觉很迷茫,有什么线索吗?
问候
弗朗西斯科
java - Saga 条目表/ Sagas 集合仍然为空
我一直在关注AxonBank 示例,以了解 Saga 在 Axon 框架中的实现,并使用类似这样的代码来启动和结束 saga
在通过 REST API 执行汇款后,所有这些代码都会被执行,因为我可以看到我的日志打印到控制台并且所有交易都存储在帐户表中。
domain_event_entry 中也存在所有条目,但是无论事务是成功还是失败,saga_entry 和 association_value_entry 表都保持为空。
最初我认为这可能是因为 saga 存储配置错误,所以我配置了 saga 存储,MongoSagaStore
但 Saga 的集合仍然是空的。
那么我在这里遗漏了什么,或者轴突只是在传奇完成后从这些表中删除了数据?