org.axonframework.serialization.UnknownSerializedTypeException(无法反序列化消息。序列化类型未知:
org.axonframework.serialization.UnknownSerializedTypeException(Could not deserialize a message. The serialized type is unknown:
我已经用 spring boot axon 实现了两个微服务。
微服务 A 包含 UserAggregate。
微服务 B 包含 UserAggregate。
微服务 A 能够在 UserAggregate 中生成以下 2 个事件。
1) UserCreatedEvent 存储在事件存储中,具有 0 个 UserAggregate 类型的序列
2) UserUpdatedEvent 存储在事件存储中,具有 1 个 UserAggregate 类型的序列
现在,微服务 B 想在同一个 UserAggregate 上生成另一个事件,事件存储操作是从 B 服务生成的
3) UserDeletedEvent 需要用 2 个 UserAggregate
类型的序列存储在事件存储中
但是我遇到了异常,我该如何解决这个异常?org.axonframework.serialization.UnknownSerializedTypeException
2019-09-17 21:46:41.829 警告 1756 --- [onPool-worker-2] o.a.c.gateway.DefaultCommandGateway:命令 'com.ms.commands.UserDeletedCommand' 导致 org.axonframework.serialization.UnknownSerializedTypeException(可能不反序列化消息。序列化类型未知:com.ms.events.UserCreatedEvent (rev. null))
我正在使用带 spring boot 2 的 axon 3.3.3 版本。
我正在使用 JdbcEventStorageEngine。
@Bean
public JdbcEventStorageEngine eventStorageEngine(ConnectionProvider connectionProvider) {
return new JdbcEventStorageEngine(connectionProvider, NoTransactionManager.INSTANCE);
}
在application.properties
axon.serializer.general=jackson
axon.serializer.events=jackson
axon.serializer.messages=jackson
应用程序中任何消息或同一限界上下文中的一组微服务的完全限定 class 名称应该是已知的。
如果没有这个,实际上任何应用程序都无法"understand"来自另一个应用程序的调度命令、事件或查询的序列化形式。
从这一点来看,通常需要为您的命令(及其潜在的响应、事件和查询(以及查询响应)提供专用的 module/package/repository。
每个属于同一个限界上下文的项目都可以依赖这个 "core-api" 包,这样他们都知道前面提到的任何传入消息的完全限定 class 名称。
我已经用 spring boot axon 实现了两个微服务。
微服务 A 包含 UserAggregate。
微服务 B 包含 UserAggregate。
微服务 A 能够在 UserAggregate 中生成以下 2 个事件。
1) UserCreatedEvent 存储在事件存储中,具有 0 个 UserAggregate 类型的序列
2) UserUpdatedEvent 存储在事件存储中,具有 1 个 UserAggregate 类型的序列
现在,微服务 B 想在同一个 UserAggregate 上生成另一个事件,事件存储操作是从 B 服务生成的
3) UserDeletedEvent 需要用 2 个 UserAggregate
类型的序列存储在事件存储中但是我遇到了异常,我该如何解决这个异常?org.axonframework.serialization.UnknownSerializedTypeException
2019-09-17 21:46:41.829 警告 1756 --- [onPool-worker-2] o.a.c.gateway.DefaultCommandGateway:命令 'com.ms.commands.UserDeletedCommand' 导致 org.axonframework.serialization.UnknownSerializedTypeException(可能不反序列化消息。序列化类型未知:com.ms.events.UserCreatedEvent (rev. null))
我正在使用带 spring boot 2 的 axon 3.3.3 版本。 我正在使用 JdbcEventStorageEngine。
@Bean
public JdbcEventStorageEngine eventStorageEngine(ConnectionProvider connectionProvider) {
return new JdbcEventStorageEngine(connectionProvider, NoTransactionManager.INSTANCE);
}
在application.properties
axon.serializer.general=jackson
axon.serializer.events=jackson
axon.serializer.messages=jackson
应用程序中任何消息或同一限界上下文中的一组微服务的完全限定 class 名称应该是已知的。
如果没有这个,实际上任何应用程序都无法"understand"来自另一个应用程序的调度命令、事件或查询的序列化形式。
从这一点来看,通常需要为您的命令(及其潜在的响应、事件和查询(以及查询响应)提供专用的 module/package/repository。 每个属于同一个限界上下文的项目都可以依赖这个 "core-api" 包,这样他们都知道前面提到的任何传入消息的完全限定 class 名称。