如何使用org.springframework.messaging.converter.ProtobufMessageConverter

How to use org.springframework.messaging.converter.ProtobufMessageConverter

我试图使用 Spring 内置框架 ProtobufMessageConverter 来转换我的 kafka 消息,但我似乎找不到使用此转换器的方法。

我的绑定配置如下:

  bindings:
    input-in-0:
      destination: test-input
      group: test-group
      content-type: application/x-protobuf;charset=UTF-8

当我使用我的自定义消息转换器时,我可以看到它在 SimpleFunctionRegistry.messageConverter 中注册,这是一个客户转换器和默认转换器的列表。但是,ProtobufMessageConverter 似乎没有包含在默认转换器中(它们在 CompositeMessageConverterFactory.initDefaultConverters 中注册)并且如果我尝试手动实例化它也会被 ContentTypeConfiguration.isConverterEligible 过滤掉。

我查了官方文档,但没有提到如何正确使用converter.I如果有人可以分享您如何使用它的经验,将不胜感激

它在 SimpleFunctionRegistry.messageConverter 中注册的事实就足够了。 initDefaultConverters 是 s-c-stream 中基于注释的支持的过时功能,在这里不会影响您(假设您使用的是基于函数的编程模型)。

无论如何,在 SimpleFunctionRegistry 的转换器列表中,您的转换器应该是第一个,并且应该是第一个被 SmartCompositeMessageConverter 尝试的转换器。 我怀疑你的 ProtobufMessageConverter 的实现有问题,因为它在测试此转换器是否支持特定消息时不响应 application/x-protobuf;charset=UTF-8 内容类型。但是,如果没有看到实施或没有可重现的样本,很难说它可能是什么。也许您可以创建一个最低限度的样本并将 i 推到某个地方 github 以便我们看一下?