gpt4 book ai didi

spring-boot - 带有 Spring Boot : Query side cannot receive event in case of using JPA-based Repository on command side 的 Axon 框架

转载 作者:行者123 更新时间:2023-12-05 06:38:26 27 4
gpt4 key购买 nike

我创建了一个项目springaxon使用 axon-spring-boot-starter 来研究 axonframework。 .如果我在命令端使用事件源,它工作正常。 (实际上,因为有JPA可用,并且没有声明bean userOrderRepository,所以默认使用一个带有JPA Event Storage Engine的Event Store)我可以从查询端看到日志“...收到 OrderCreatedEvent...”。以下为相关源码。

UserOrder.java:
@Aggregate
@Entity
public class UserOrder

AxonConfiguration.java:
//Do not declare a repository

我希望在命令端使用基于 JPA 的存储库而不是事件源,因此我为聚合注释了一个存储库,并声明了这个存储库。以下为相关源码。

UserOrder.java:
@Aggregate(repository="orderRepository")
@Entity
public class UserOrder

AxonConfiguration.java:
@Bean
@Autowired
public Repository<UserOrder> orderRepository(EntityManagerProvider entityManagerProvider, EventBus eventBus) {
return new GenericJpaRepository<UserOrder>(entityManagerProvider, UserOrder.class, eventBus);
}

但是这次我无法从查询端获取日志“...received OrderCreatedEvent...”。

我对此一无所知,欢迎任何建议,谢谢。

最佳答案

调整用于聚合的存储库类型不应该对事件总线功能产生任何影响,它只是以稍微不同的方式存储事件。

它对事件进行的主要调整是,它们在内部从 DomainEventMessages 更改为常规 EventMessags。不同之处在于 DomainEventMessages 具有基于事件的事件源所需的聚合特定字段。由于您不希望聚合事件源,因此不再需要使用那些 DomainEventMessages

也就是说,它们仍然应该被存储,因此可以从您的查询端检索。

您是否确认您的事件仍存储在事件存储中?您是否也将 EventStore 调整为 (Simple)EventBus?使用 Spring Boot 启动器依赖项时,Axon 中的默认设置是 EmbeddedEventStore,它存储和发送事件。

关于spring-boot - 带有 Spring Boot : Query side cannot receive event in case of using JPA-based Repository on command side 的 Axon 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46169124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com