Sprint Integration DSL - Http入站适配器和轮询器

时间:2018-02-27 13:13:52

标签: spring-integration spring-integration-dsl spring-integration-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消息源的内容。

1 个答案:

答案 0 :(得分:2)

嗯,你错过了HTTP本质上是事件驱动的事实,它在这里是服务器。您可以从最终用户的角度使用它,比如从浏览器或某些命令行工具或任何其他HTTP客户端调用URL。

不确定是什么让您认为HTTP服务器正在轮询。并且不确定它应该轮询什么......

也许您所需要的正好相反 - Http.outboundGateway(),您可以在其中调用一些远程REST服务并等待回复。但那已经不是,它是处理器

如果您确实需要定期调用此类服务​​,可以考虑使用简单轮询MessageSource

IntegrationFlows.from(() -> new GenericMessage<>(""),
      .poller(Pollers.fixedDelay(period))
  .handle(Http.outboundGateway("http://localhost:8080/data"))