首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axon框架- GZIP数据

Axon框架- GZIP数据
EN

Stack Overflow用户
提问于 2020-01-14 08:21:30
回答 2查看 226关注 0票数 0

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

我试过像这样实现装饰师:

代码语言:javascript
复制
public class GzipSerializer implements Serializer {

  private Serializer serializer;
  ...

然后使用以下方法配置它:

代码语言:javascript
复制
  @Autowired
  public void serializerConfiguration(Configurer configurer) {
    Serializer defaultSerializer = new GzipSerializer(JacksonSerializer.defaultSerializer());
    configurer.configureSerializer(configuration -> defaultSerializer)
        .configureMessageSerializer(configuration -> defaultSerializer)
        .configureEventSerializer(configuration -> defaultSerializer);
  }

但这似乎行不通。是否有更简单的方法(或者可能已经实现了功能)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-14 08:56:36

看起来你在使用Spring (Boot?)把你的申请转过来。在这种情况下,定义/重写序列化程序的方法是声明bean:

代码语言:javascript
复制
@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不太可能满足这些期望。

可以为消息定义序列化程序,如下所示:

代码语言:javascript
复制
@Qualifier("messageSerializer") // <-- this qualifier tells Axon you intend to use this to serialize messages (incl. events)
@Bean
public Serializer serializer() {
  return new GzipSerializer(....);
}
票数 3
EN

Stack Overflow用户

发布于 2021-06-21 13:49:06

在Spring中,您可以在没有java代码的情况下使用配置属性,如下所示。

代码语言:javascript
复制
axon:
  serializer:
    messages: jackson
    general: jackson
    events: jackson
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59729880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档