Sprint Integration DSL - Http входящий адаптер и опросчик

Я новичок в Spring Integration, и я пытаюсь настроить простой вариант использования:

опрос удаленной конечной точки REST, разделение возвращаемых данных на несколько строк и отправка их исходящему адаптеру Kafka. Я успешно сделал что-то аналогичное, в котором используется файловый адаптер, но я застрял с адаптером HTTP. Я не понимаю, как связать опросчик с входящим адаптером HTTP.

До сих пор мой подход заключался в создании простого потока:

return IntegrationFlows
  .from
    (
      Http.inboundChannelAdapter("http://localhost:8080/data")
        .requestMapping(m -> m.methods(HttpMethod.GET))
        .replyTimeout(20)
      )
  .channel(INBOUND_DEMO_CHANNEL)
  .get();

inboundChannelAdapter, похоже, не принимает Poller. В моей предыдущей попытке использования файла я создал FileReadingMessageSource, чтобы мой поток выглядел так:

return IntegrationFlows.from(fileReadingMessageSource,
    // POLLER CONFIGURATION
    .poller(Pollers.fixedDelay(period)
    ...
    .get();

но я не могу найти эквивалент источника сообщения HTTP.


person Luciano    schedule 27.02.2018    source источник


Ответы (1)


Что ж, вы упускаете из виду тот факт, что HTTP по своей природе управляется событиями, и здесь он является сервером. Вы используете его с точки зрения конечного пользователя как-то вроде вызова URL-адреса из браузера, какого-либо инструмента командной строки или любого другого HTTP-клиента.

Не уверен, что заставило вас подумать, что HTTP-сервер опрашивает. И не уверен, что он должен опросить ...

Может быть, вам нужно прямо противоположное - Http.outboundGateway(), где вы вызываете какую-то удаленную службу REST и ждете ответа. Но это уже не источник, это процессор.

Если вам действительно нужно периодически вызывать такую ​​службу, вы можете использовать простой опрос MessageSource:

IntegrationFlows.from(() -> new GenericMessage<>(""),
      .poller(Pollers.fixedDelay(period))
  .handle(Http.outboundGateway("http://localhost:8080/data"))
person Artem Bilan    schedule 27.02.2018
comment
Да, меня явно смутила номенклатура и недостаточное понимание Spring Integration. Конфигурация, которую я опубликовал, создает конечную точку с Spring Integration, которая действует как входящий канал. Спасибо! - person Luciano; 27.02.2018