gpt4 book ai didi

java - Axon框架-GZIP JSON数据

转载 作者:行者123 更新时间:2023-12-02 01:08:25 25 4
gpt4 key购买 nike

JacksonSerializer 上为 Axon 中的 EventsMessages 实现 GZIP 压缩装饰器的最简单方法是什么?在将事件作为 BLOB 保存到 MySQL 之前,我尝试对 JSON 消息进行 GZIP。

我尝试像这样实现装饰器:

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(Boot?)来连接您的应用程序。在这种情况下,定义/覆盖序列化器的方法是声明 bean:

@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(....);
}

关于java - Axon框架-GZIP JSON数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59729880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com