我用axon-spring-boot-starter创建了一个项目springaxon,用于研究axonframework。 。 如果我在命令端使用事件源,它工作正常。 (事实上,由于JPA可用,并且未声明bean userOrderRepository,因此默认情况下使用带有JPA事件存储引擎的事件存储) 我可以看到日志" ...收到OrderCreatedEvent ..."从查询方面。以下是相关的源代码。
UserOrder.java:
@Aggregate
@Entity
public class UserOrder
AxonConfiguration.java:
//Do not declare a repository
我喜欢命令端的基于JPA的Repository而不是事件源,所以我为聚合注释了一个存储库,并声明了这个存储库。 以下是相关的源代码。
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);
}
但我无法获取日志&#34; ...收到OrderCreatedEvent ...&#34;这次来自查询方面。
我不知道这个,任何建议都表示赞赏,谢谢。
答案 0 :(得分:0)
调整用于聚合的存储库类型不应对事件总线功能产生任何影响,它只是将事件存储起来有点不同。
事件伴随的主要调整是,它们会在内部从DomainEventMessages
更改为常规EventMessags
。
不同之处在于DomainEventMessages
具有根据事件采集聚合所需的聚合特定字段。
由于您不希望事件来源聚合,因此不再需要使用这些DomainEventMessages
。
也就是说,它们应该仍然存储,因此可以从您的查询端进行检索。
您是否确认您的活动仍存储在活动商店中?
您是否也可以将EventStore
调整为(Simple)EventBus
?
使用Spring Boot启动程序依赖项时,Axon中的默认值为EmbeddedEventStore
,用于存储和发送事件。