将 ConversionService 添加到 Spring Cloud Stream

Adding ConversionService to Spring Cloud Stream

我正在使用 Spring 集成和 String Cloud Stream。我有一个 header,我希望我的 HTTP 网关使用它,它有一个 Long 值,但默认情况下它不能从 Long 转换为 String,因此显示错误 Consider registering a Converter with ConversionService.

因此,我尝试添加自己的 LongToStringConverter class 和以下 Bean,以便可以使用 LongToStringConverter:

@Bean
public ConversionService conversionService()
{
  DefaultConversionService service = new DefaultConversionService();
  service.addConverter( new LongToStringConverter() );
  return service;
}

然后收到如下错误:Dispatcher has no subscribers.

如果我仅 return 来自上述 bean 的 DefaultConversionService 实例,我仍然收到错误。

当我删除上面的 bean 并在设置 header 值时简单地将 Long 值转换为 String 并且工作正常。是否可以改用 ConversionService?如果是那么怎么办?

首先 已经有 ConversionService: https://docs.spring.io/spring-integration/docs/4.3.12.RELEASE/reference/html/messaging-endpoints-chapter.html#payload-type-conversion。它有一些预定义的转换器。所以,你应该考虑在这件事上使用@IntegrationConverter

另一方面,您根本不清楚为什么需要这样做。我想知道为什么当你首先声明 header 时 Long.toString() 对你来说还不够。