Spring data stream, пользовательские заголовки FTP-источника - PullRequest
0 голосов
/ 10 сентября 2018

Сценарий:

  • Я использую приложения 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 является стандартным Config от FTP Starter , AWSLocalStackConfig предназначен только для использования связующего Kinesis на localstack


Todo:

  • Я хочу добавить собственный заголовок для каждого сообщения, например «source: ProviderA», «source: ProviderB»
  • У меня будет несколько источников FTP, отправляющих сообщения в одну и ту же тему.
  • Я хочу определить источник сообщения, не создавая промежуточную тему для обогащения заголовков.

Есть ли способ сделать это без создания IntegrationFlow самостоятельно?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Исходя из комментария Олега, я так и сделал:

@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();
  }
}

Это работает, если вы реализуете свое собственное приложение. Чтобы сделать это с помощью простых стартовых приложений, по-видимому, нам нужно дождаться следующей версии.

0 голосов
/ 10 сентября 2018

@ SylvainM По иронии судьбы мы в настоящее время работаем над тем, чтобы обеспечить такую ​​поддержку всем нашим начинающим приложениям. Я имею в виду, что вы можете сделать это сейчас, просто добавив перехватчик канала к выходному каналу вашего Sopurce, но то, что происходит по конвейеру, будет намного проще и основано на Spring Cloud Functions. Следите за блогом об этом.

...