java - Axon 框架 - GZIP JSON 数据
问题描述
在 Axon和Axon 上JacksonSerializer
实现GZIP 压缩装饰器的最简单方法是什么?在将事件作为 BLOB 保存到 MySQL 之前,我正在尝试 GZIP JSON 消息。Events
Messages
我尝试像这样实现装饰器:
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 - 如何处理带有响应的 JSON Array 是两个对象子对象,但内容不同
- java - 使用递归将二进制整数转换为十进制整数
- python - 使用python提取数据
- javascript - 如何从另一个函数向连接到 Node.js 套接字服务器的客户端写入数据?
- tensorflow - 如何将 TensorFlow 数据集输入到 traning_x、training_y、testing_x、testing_y 到 Keras API?
- bash - 使用 OpenWRT 路由器的自动 SSH 到 AWS EC2 服务器
- python - 获取“过时元素引用”时尝试循环浏览页面以抓取多个页面
- javascript - 为什么 useEffect 不改变段落?
- android - Android Opencv 无法拼接所有图像
- python - Pong - 当任一玩家达到分数阈值时崩溃而不是重置游戏