如何使用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 以便我们看一下?
我试图使用 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 以便我们看一下?