我用axon-spring- springaxon -starter创建了一个学习axonframework的项目。。如果我在命令端使用事件源,它工作得很好。(实际上,因为JPA是可用的,并且bean userOrderRepository没有声明,所以缺省情况下使用带有JPA Event Storage引擎的Event Store )我可以看到日志"...received 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...“这次是从查询端开始的。
我不知道这一点,任何建议都是感激的,谢谢。
发布于 2017-09-13 20:31:42
调整用于聚合的存储库类型应该不会对事件总线功能产生任何影响,它只是存储了一些不同的事件。
它伴随事件的主要调整是,它们在内部从DomainEventMessages更改为常规EventMessags。不同之处在于,DomainEventMessages具有聚合特定字段,用于根据事件获取聚合。而且,由于您不希望使用聚合的事件源,因此不再需要使用这些DomainEventMessages。
也就是说,它们仍然应该被存储,因此可以从您的查询端检索。
您是否验证了您的事件仍存储在事件存储中?你可能也把你的EventStore调整为(Simple)EventBus了吗?使用Spring Boot starter依赖项时,Axon中的默认设置是EmbeddedEventStore,它存储和发送事件。
https://stackoverflow.com/questions/46169124
复制相似问题