轴突框架 - GZIP JSON 数据
Axon framework - GZIP JSON data
在 Axon 中为 Events
和 Messages
在 JacksonSerializer
上实现 GZIP 压缩装饰器的最简单方法是什么?在将事件作为 BLOB 保存到 MySQL 之前,我正在尝试 GZIP JSON 消息。
我试过像这样实现装饰器:
public class GzipSerializer implements Serializer {
private Serializer serializer;
...
然后使用以下配置对其进行配置:
@Autowired
public void serializerConfiguration(Configurer configurer) {
Serializer defaultSerializer = new GzipSerializer(JacksonSerializer.defaultSerializer());
configurer.configureSerializer(configuration -> defaultSerializer)
.configureMessageSerializer(configuration -> defaultSerializer)
.configureEventSerializer(configuration -> defaultSerializer);
}
但是好像不行。是否有更简单的方法(或可能已经实现的功能)?
您似乎正在使用 Spring(启动?)连接您的应用程序。在这种情况下,define/override 序列化器的方法是声明 beans:
@Primary // <-- Use the Primary annotation for the generic serializer. This makes sure spring returns this instance when no specific qualifier is provided
@Bean
public Serializer serializer() {
return new GzipSerializer(....);
}
我们建议仅对消息使用基于 Jackson 的序列化程序,因为其他一些对象结构不符合 Jackson 的预期。例如,聚合(用于快照)和 Sagas 不太可能满足这些期望。
您可以按如下方式为消息定义序列化程序:
@Qualifier("messageSerializer") // <-- this qualifier tells Axon you intend to use this to serialize messages (incl. events)
@Bean
public Serializer serializer() {
return new GzipSerializer(....);
}
在 Spring 引导中,您可以像下面那样使用配置属性而无需 java 代码。
axon:
serializer:
messages: jackson
general: jackson
events: jackson
在 Axon 中为 Events
和 Messages
在 JacksonSerializer
上实现 GZIP 压缩装饰器的最简单方法是什么?在将事件作为 BLOB 保存到 MySQL 之前,我正在尝试 GZIP JSON 消息。
我试过像这样实现装饰器:
public class GzipSerializer implements Serializer {
private Serializer serializer;
...
然后使用以下配置对其进行配置:
@Autowired
public void serializerConfiguration(Configurer configurer) {
Serializer defaultSerializer = new GzipSerializer(JacksonSerializer.defaultSerializer());
configurer.configureSerializer(configuration -> defaultSerializer)
.configureMessageSerializer(configuration -> defaultSerializer)
.configureEventSerializer(configuration -> defaultSerializer);
}
但是好像不行。是否有更简单的方法(或可能已经实现的功能)?
您似乎正在使用 Spring(启动?)连接您的应用程序。在这种情况下,define/override 序列化器的方法是声明 beans:
@Primary // <-- Use the Primary annotation for the generic serializer. This makes sure spring returns this instance when no specific qualifier is provided
@Bean
public Serializer serializer() {
return new GzipSerializer(....);
}
我们建议仅对消息使用基于 Jackson 的序列化程序,因为其他一些对象结构不符合 Jackson 的预期。例如,聚合(用于快照)和 Sagas 不太可能满足这些期望。
您可以按如下方式为消息定义序列化程序:
@Qualifier("messageSerializer") // <-- this qualifier tells Axon you intend to use this to serialize messages (incl. events)
@Bean
public Serializer serializer() {
return new GzipSerializer(....);
}
在 Spring 引导中,您可以像下面那样使用配置属性而无需 java 代码。
axon:
serializer:
messages: jackson
general: jackson
events: jackson