Spring数据流,FTP源自定义标头

时间:2018-09-10 11:15:57

标签: spring-cloud-stream spring-cloud-dataflow

场景:

  • 我正在使用Spring Data Starter应用程序创建FTP源。

代码:

@SpringBootApplication
@Import({ FtpSourceConfiguration.class, AWSLocalStackConfig.class })
public class FtpSourceKinesisApplication {

  public static void main(String[] args) {
    SpringApplication.run(FtpSourceKinesisApplication.class, args);
  }
}
  • FtpSourceConfiguration是FTP Starter中的标准配置,AWSLocalStackConfig仅在本地堆栈上使用Kinesis绑定器


Todo:

  • 我想在每个消息上添加一个自定义标头,例如“ source:ProviderA”,“ source:ProviderB”
  • 我将有多个FTP来源将消息推送到同一主题。
  • 我想标识消息源,而不必创建中介主题来丰富标题。

有没有办法自己创建IntegrationFlow的方法?

2 个答案:

答案 0 :(得分:1)

@SylvainM具有讽刺意味的是,我们目前正在努力为我们所有的应用程序初学者提供此类支持。我的意思是,您现在可以通过简单地将通道拦截器添加到Sopurce的输出通道来做到这一点,但是基于Spring Cloud Functions,即将进行的工作将变得更加简单。 注意有关该博客的内容。

答案 1 :(得分:0)

根据奥列格(Oleg)的评论,这就是我所做的:

@Component
public class SourceHeaderEnricher implements ChannelInterceptor {

  SourceHeaderEnricher (Source source) {
    ((ChannelInterceptorAware) source.output()).addInterceptor(this);
  }

  @Override
  public Message<?> preSend(Message<?> message, MessageChannel channel) {
    MessageBuilder<?> builder = MessageBuilder.fromMessage(message);
    builder.setHeader("x-custom", "hello world");
    return builder.build();
  }
}

如果您正在实现自己的应用程序,则此方法有效。要使用简单的入门应用程序进行此操作,显然我们需要等待下一个版本。