在JacksonSerializer上为Axon中的Events和Messages实现GZIP压缩装饰器的最简单方法是什么?在将事件保存到MySQL为BLOB之前,我正在尝试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);
}但这似乎行不通。是否有更简单的方法(或者可能已经实现了功能)?
发布于 2020-01-14 08:56:36
看起来你在使用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(....);
}发布于 2021-06-21 13:49:06
在Spring中,您可以在没有java代码的情况下使用配置属性,如下所示。
axon:
serializer:
messages: jackson
general: jackson
events: jacksonhttps://stackoverflow.com/questions/59729880
复制相似问题