当前位置: 首页 > 知识库问答 >
问题:

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

陆翔飞
2023-03-14

我对Spring集成相当陌生,我正在尝试设置一个简单的用例:

轮询远程RESTendpoint,将返回的有效负载拆分为多行,并将其发送到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似乎不接受轮询器。在我之前使用文件的尝试中,我创建了一个文件读取消息源(FileReadingMessageSource),因此我的流看起来像:

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

但我找不到与HTTP消息源等效的消息源。

共有1个答案

马新觉
2023-03-14

好吧,你忽略了一个事实,HTTP是一个由自然驱动的事件,它是这里的服务器。您可以从最终用户的角度使用它,就像从浏览器或某些命令行工具或任何其他HTTP客户端调用URL一样。

不确定是什么让您认为HTTP服务器正在轮询。但不确定应该投票什么。。。

也许你需要的恰恰相反-Http。outboundGateway(),在这里调用一些远程REST服务并等待回复。但这已经不是一个来源,而是一个处理器。

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

IntegrationFlows.from(() -> new GenericMessage<>(""),
      .poller(Pollers.fixedDelay(period))
  .handle(Http.outboundGateway("http://localhost:8080/data"))
 类似资料:
  • 有人能给出一个建议吗?或者有没有其他方法也能达到同样的目的。 谢谢你。

  • 我尝试使用以下代码,得到了回应:状态:405方法不允许。这是我的Http请求:http://localhost:8090/services/test?name=test.代码或http请求有什么问题?

  • 问题内容: 入站和出站通道适配器之间的根本区别是什么? 任何示例都将非常有帮助。 我已经查看过Spring文档,这种“方向性”的区别对我来说还不清楚。我支持配置了outbound-channel-adapter的应用程序,但是我发现使用 出站 标签可以直观地了解行为计数器。该适配器获取一个外部文件,然后 将其 引入应用程序中, 在 该应用程序中我们解析文件并保留数据。 这类似于这个问题,但是我想更

  • 我目前有一个Rabbit MQ Broker设置,带有直接交换,我使用Spring Integration来生成和使用队列中的消息。我使用的是责任链模式,其中我使用SI将消耗的消息从一个POJO传递到另一个POJO。为此,我使用了一个Spring Integration入站通道适配器。这要求它具有对轮询器的引用。 如何移除轮询器,使其不在轮询机制上工作,而是使用回调,以便一旦消息可用,它将从队列中

  • 我发现了一个xml配置的入站适配器示例,但我并不完全理解。配置指定REST请求设置请求方法、使用的格式等。 我认为,从Spring集成的角度来看,响应应该更加重要,因为响应实际上是为消息通道提供信息的。我说得对吗? HTTP入站适配器用作消息endpoint(实际上是消息起始点),它调用HTTP请求,例如REST服务的URL。”http://myRest/transfer/next“-向SI消息通

  • 我试图将从Quickfix读取消息(读取修复消息)配置到spring集成中。我知道我可以使用入站通道适配器从外部源(如QuickFix)读取数据。您能提供如何编写事件驱动入站通道适配器的示例吗?我有以下配置不起作用