我想使用Axon框架和Axon Server作为我的事件存储和事件总线,以及包含spring data jpa的spring boot项目。
我有一个启动两个容器的docker-compose -- postgres db和Axon Server。我不希望axon使用postgres作为它的事件存储,我希望它使用Axon Server作为事件存储。因此,我将@EntityScan添加到主类以指向我自己的JPA实体,当我启动我的spring boot应用程序时,我得到了以下异常:
Caused by: java.util.concurrent.ExecutionException: org.axonframework.lifecycle.LifecycleHandlerInvocationException: Failed during invocation of lifecycle handler [public void org.axonframework.axonserver.connector.processor.EventProcessorControlService.start()] on component [org.axonframework.axonserver.connector.processor.EventProcessorControlService@32f2de5c]
Caused by: org.axonframework.lifecycle.LifecycleHandlerInvocationException: Failed during invocation of lifecycle handler [public void org.axonframework.axonserver.connector.processor.EventProcessorControlService.start()] on component [org.axonframework.axonserver.connector.processor.EventProcessorControlService@32f2de5c]
Caused by: java.lang.reflect.InvocationTargetException: null
Caused by: org.axonframework.eventhandling.tokenstore.UnableToRetrieveIdentifierException: Exception occurred while trying to establish storage identifier
Caused by: java.lang.IllegalArgumentException: Unable to locate persister: org.axonframework.eventhandling.tokenstore.jpa.TokenEntry
Caused by: org.hibernate.UnknownEntityTypeException: Unable to locate persister: org.axonframework.eventhandling.tokenstore.jpa.TokenEntry在我添加所有的JPA依赖之前,它工作得很好,但是在我为jpa添加了spring-boot-starter之后,我得到了上面的异常
我怎么才能修复它?
发布于 2021-09-14 08:54:48
默认情况下,Axon Framework会尝试在postgres上创建一些表。需要这些表来管理令牌、Sagas等。由于添加了@EntityScan注释,因此现有的默认扫描机制将不再起作用。
你可以快速查看它的ref guide如何解决你的问题。
引用自文档:
要注册Axon的
实体,请包含相关的包,如下所述:
org.axonframework.eventhandling.tokenstore包含Event Processors.org.axonframework.modelling.saga.repository.jpa使用的JPA所需的实体包含持久化所需的实体Sagasorg.axonframework.eventsourcing.eventstore.jpa包含使用关系数据库作为事件存储区时TokenStore事件存储引擎所需的实体。发布于 2021-09-14 21:51:23
我设法让它按如下方式工作:
我删除了@EntityScan并使用autoconfig扫描所有实体
我添加到application.properties文件
spring.jpa.hibernate.ddl-auto=update数据库中axon需要的所有表都在那里。
https://stackoverflow.com/questions/69171943
复制相似问题