代码之家  ›  专栏  ›  技术社区  ›  sansari

春云的反序列化

  •  1
  • sansari  · 技术社区  · 6 年前

    我有一个内容类型配置如下的生产者

    spring:
      cloud:
        stream:
          bindings:
            eventOut:
              destination: lab_csi
              content-type: application/json
    

    在消费者方面,我使用Spring集成(KysSeriMeDigaRihanChhanelAdvor)将事件路由到不同的通道。

    @ServiceActivator(inputChannel = "channelA")
        void handleMessage(Message<?> msg) {
            objectMapper.readValue(msg.getPayload(), MyEvent.class);
        }
    

    编组到MyStEvices失败。在堆栈错误中,我可以看到内容类型是有效载荷的一部分,有效载荷还没有从JSON到波霍反序列化。

    我想知道如何在进行任何其他转换之前反序列化消息。我找不到任何方法可以将MessageConverter设置为适配器。

    谢谢你的帮助。

    谢谢你

    1 回复  |  直到 6 年前
        1
  •  2
  •   Artem Bilan    6 年前

    听起来你的制作人是SpringCloudstream,但消费者很简单 KinesisMessageDrivenChannelAdapter . 目前还不清楚为什么一个也不使用春云流消费者,但无论如何…

    SCST产生器将消息头与有效载荷一起序列化到KiScript记录体中的问题。仅仅因为aws kinisis本身不支持header。

    如果您对使用者端的头不感兴趣,可以禁用在生产者端嵌入头:

    spring:
      cloud:
        stream:
          bindings:
            eventOut:
              destination: lab_csi
            producer:
            headerMode: none
    

    否则你就别无选择 运动信息通道适配器 除非你使用 EmbeddedHeaderUtils 手动。