如果您想用Spring Integration编写一个流程来轮询HTTP端点并从http端点收集一些内容以进行进一步处理,那有点不直观。

Spring Integration提供了几种与HTTP端点集成的方式-

  1. Http出站适配器–将消息发送到http端点
  2. Http出站网关–将消息发送到http端点并收集响应作为消息

我第一个轮询http端点的本能是使用Http Inbound通道适配器,我做出的错误假设是适配器将负责从端点获取信息-Http Inbound Gateway实际所做的是公开Http端点等待请求到来! ,这就是为什么我首先说,轮询URL并从中收集内容对我来说有点不直观,我实际上必须使用Http Outbound网关

在澄清了这一点之后,请考虑一个示例,在该示例中,我要轮询此URL上可用的USGS地震信息提要-http://earthquake.usgs.gov/earthquakes/feed/geojson/all/hour

这是我的示例http Outbound组件的样子:

<int:channel id='quakeinfo.channel'><int:queue capacity='10'/></int:channel><int:channel id='quakeinfotrigger.channel'></int:channel> <int-http:outbound-gateway id='quakerHttpGateway'request-channel='quakeinfotrigger.channel'url='http://earthquake.usgs.gov/earthquakes/feed/geojson/all/hour'http-method='GET'expected-response-type='java.lang.String'charset='UTF-8'reply-timeout='5000'reply-channel='quakeinfo.channel'>     </int-http:outbound-gateway>

在这里,http出站网关等待消息进入quakeinfotrigger通道,将GET请求发送到'http://earthquake.usgs.gov/earthquakes/feed/geojson/all/hour'网址,然后放置响应json字符串进入“ quakeinfo.channel”通道

测试这很容易:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration('httpgateway.xml')
public class TestHttpOutboundGateway {@Autowired @Qualifier('quakeinfo.channel') PollableChannel quakeinfoChannel;@Autowired @Qualifier('quakeinfotrigger.channel') MessageChannel quakeinfoTriggerChannel;@Testpublic void testHttpOutbound() {quakeinfoTriggerChannel.send(MessageBuilder.withPayload('').build());Message<?> message = quakeinfoChannel.receive();assertThat(message.getPayload(), is(notNullValue()));}}

我在这里所做的是获取对触发出站网关向http端点发送消息的通道的引用,并获取对放置来自http端点的响应的另一个通道的引用。 我通过在触发器通道中放置一个空虚消息来触发测试流程,然后等待消息在响应通道中可用并在内容中声明。

这样做很干净,但是我的初衷是编写一个轮询器,该轮询器每分钟左右触发一次此端点的轮询,为此,我要做的实际上是每分钟将一个伪消息放入“ quakeinfotrigger.channel”通道中使用Spring Integration的“ poller”和一些Spring Expression语言可以轻松实现:

<int:inbound-channel-adapter channel='quakeinfotrigger.channel' expression=''''><int:poller fixed-delay='60000'></int:poller>
</int:inbound-channel-adapter>

在这里,我有一个与轮询器相连的Spring inbound-channel-adapter触发器,该轮询器每分钟都会触发一条空消息。

所有这些看起来有些令人费解,但效果很好–这是一个具有有效代码的要点

相关链接

  1. 基于我在Spring论坛上提出的一个问题http://forum.springsource.org/showthread.php?130711-Need-help-with-polling-to-a-json-based-HTTP-service

参考: all和其他博客中使用 JCG合作伙伴 Biju Kunjummen的Spring Integration轮询http端点 。

翻译自: https://www.javacodegeeks.com/2012/11/polling-an-http-end-point-using-spring-integration.html

使用Spring Integration轮询http端点相关推荐

  1. usb端点轮询_使用Spring Integration轮询http端点

    usb端点轮询 如果您想用Spring Integration编写一个流程来轮询HTTP端点并从http端点收集一些内容以进行进一步处理,那有点不直观. Spring Integration提供了几种 ...

  2. Spring Integration –轮询文件的创建和修改

    1引言 文件支持是Spring Integration与外部系统通信的另一个端点. 在这种情况下,它提供了几个组件来读取,写入和转换文件. 在这篇文章中,我们将编写一个监视目录的应用程序,以便读取其中 ...

  3. spring 长轮询_Spring集成文件轮询和测试

    spring 长轮询 我最近实施了一个小项目,在该项目中,我们必须轮询文件夹中的新文件,然后在文件内容上触发服务流. Spring Integration非常适合此要求,因为它带有一个通道适配器 ,该 ...

  4. tomcat 轮询_用Spring长轮询Tomcat

    tomcat 轮询 就像喜剧演员弗兰基· 豪威尔 ( Frankie Howerd)所说的"噢,小姐小姐" ,但足够多的英国影射和双重诱惑,因为长轮询Tomcat对隔壁的闷气不是某 ...

  5. 用Spring长轮询Tomcat

    就像喜剧演员弗兰基· 豪威尔 ( Frankie Howerd)所说的"哦,小姐小姐" ,但足够多的英国影射和双重诱惑,因为长轮询雄猫对隔壁的闷气不是某种性偏见,这是一种技术(或更 ...

  6. Spring Integration学习资料

    Spring Integration学习资料 1.1     背景 Spring框架的一个重要主题是控制反转.从广义上来说,Spring处理其上下文中管理的组件的职责.只要组件减轻了职责,它们同时也被 ...

  7. java 长轮询_java – Spring中的长轮询

    我们有一个独特的案例,我们需要与外部API接口,这需要我们长时间轮询他们的端点以获得他们所谓的实时事件. 问题是我们可能有多达80,000人/设备在任何给定时间点击此端点,监听事件,每个设备/人1个连 ...

  8. Spring集成文件轮询和测试

    我最近实施了一个小项目,在该项目中,我们必须轮询文件夹中的新文件,然后在文件内容上触发服务流. Spring Integration非常适合此要求,因为它带有一个通道适配器 ,该适配器可以扫描文件夹中 ...

  9. .xhr长轮询_使用Spring 3.2的DeferredResult进行长轮询

    .xhr长轮询 在我们的最后一集中 , Agile Cowboys Inc.的首席执行官刚刚雇用了Java / Spring顾问,方法是为他提供最初为女友购买的保时捷. 这位首席执行官的女友因失去保时 ...

最新文章

  1. ryu和mysql实现控制_openflow的初步认识及RYU控制器实践
  2. binutils工具集用法
  3. Matlab与数据结构 -- 搜索向量或矩阵中非零元素的位置
  4. 人工智能和物联网:智慧城市的交通管理
  5. 英伟达对ARM、Linux开放光线追踪,SDK已就位,网友:switch也能跑光追的节奏?...
  6. JavaScript类库
  7. 利用该0 day漏洞的攻击活动情况
  8. MyBatis:lazy loading
  9. 转载:由图片SEO想起
  10. Nginx的SSL相关指令
  11. centos 6.5装mysql 5.7,centos 6.5装mysql5.7
  12. 对volley的初步分析第一篇
  13. 95-136-070-源码-Operator-扩展有状态的operators
  14. 14寸笔记本电脑_华为笔记本电脑该如何选择?横向对比华为三款14寸笔记本
  15. python 与或非_Python |Python 从入门到精通(放弃)之注释、行与缩进、多行语句...
  16. Ubuntu18.04 下的Gif录制工具
  17. 阿里云短信接口方法使用
  18. 网吧WEB、游戏、影视服务器应用需求分析
  19. Endian 的由来
  20. Socket中send()函数和recv()函数详解

热门文章

  1. 安卓 on a null object reference_详解Object.prototype.__proto__
  2. pandas追加写入excel_[Excel]如果你爱Excel,请学好pandas
  3. spring react_使用Spring Cloud Gateway保护React式微服务
  4. 小度拆卸_拆卸invokedynamic
  5. primefaces_使用PrimeFaces开发数据导出实用程序
  6. 对象空指针_可选和对象:空指针救星!
  7. 返回值是内置类型 不能更改_选择通过更改内容类型返回的详细程度,第二部分...
  8. Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法
  9. scrapy立面parse_立面设计模式–设计观点
  10. soa学习路线_Web服务安全性和SOA路线图的人为维度