【问题标题】:Axon framework - GZIP JSON dataAxon 框架 - GZIP JSON 数据
【发布时间】:2021-06-21 21:49:06
【问题描述】:

在 Axon 中为 EventsMessagesJacksonSerializer 上实现 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);
  }

但它似乎不起作用。是否有一些更简单的方法(或可能已经实现的功能)?

【问题讨论】:

    标签: java cqrs event-sourcing axon


    【解决方案1】:

    您似乎正在使用 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(....);
    }
    

    【讨论】:

    • 您的意思是仅对configureMessageSerializerconfigureEventSerializer 使用JSON?你有没有提到你提到的这种期望的例子?
    • 好的。这个似乎工作正常。 @Primary @Bean public Serializer serializer() { return new GzipSerializer(JacksonSerializer.defaultSerializer()); }
    【解决方案2】:

    在 Spring boot 中,您可以使用下面的配置属性,而无需 java 代码。

    axon:
      serializer:
        messages: jackson
        general: jackson
        events: jackson
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多