2

我创建了一个带有 axon-spring-boot-starter 的项目springaxon来研究 axonframework。. 如果我在命令端使用事件源,它工作正常。(实际上,因为 JPA 可用,并且没有声明 bean userOrderRepository,所以默认使用带有 JPA 事件存储引擎的事件存储)我可以从查询端看到日志“...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...”。

我对此一无所知,任何建议表示赞赏,谢谢。

4

1 回答 1

0

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

它伴随事件的主要调整是它们在内部从DomainEventMessages常规变为常规EventMessags。不同之处在于,DomainEventMessages具有聚合特定字段所需的事件采购基于事件的聚合。而且由于您不喜欢聚合事件源,因此不再需要使用那些DomainEventMessages.

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

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

于 2017-09-13T12:31:42.100 回答