使用Spring Integration轮询http端点
如果您想用Spring Integration编写一个流程来轮询HTTP端点并从http端点收集一些内容以进行进一步处理,那有点不直观。
Spring Integration提供了几种与HTTP端点集成的方式-
- Http出站适配器–将消息发送到http端点
- 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触发器,该轮询器每分钟都会触发一条空消息。
所有这些看起来有些令人费解,但效果很好–这是一个具有有效代码的要点
相关链接
- 基于我在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端点相关推荐
- usb端点轮询_使用Spring Integration轮询http端点
usb端点轮询 如果您想用Spring Integration编写一个流程来轮询HTTP端点并从http端点收集一些内容以进行进一步处理,那有点不直观. Spring Integration提供了几种 ...
- Spring Integration –轮询文件的创建和修改
1引言 文件支持是Spring Integration与外部系统通信的另一个端点. 在这种情况下,它提供了几个组件来读取,写入和转换文件. 在这篇文章中,我们将编写一个监视目录的应用程序,以便读取其中 ...
- spring 长轮询_Spring集成文件轮询和测试
spring 长轮询 我最近实施了一个小项目,在该项目中,我们必须轮询文件夹中的新文件,然后在文件内容上触发服务流. Spring Integration非常适合此要求,因为它带有一个通道适配器 ,该 ...
- tomcat 轮询_用Spring长轮询Tomcat
tomcat 轮询 就像喜剧演员弗兰基· 豪威尔 ( Frankie Howerd)所说的"噢,小姐小姐" ,但足够多的英国影射和双重诱惑,因为长轮询Tomcat对隔壁的闷气不是某 ...
- 用Spring长轮询Tomcat
就像喜剧演员弗兰基· 豪威尔 ( Frankie Howerd)所说的"哦,小姐小姐" ,但足够多的英国影射和双重诱惑,因为长轮询雄猫对隔壁的闷气不是某种性偏见,这是一种技术(或更 ...
- Spring Integration学习资料
Spring Integration学习资料 1.1 背景 Spring框架的一个重要主题是控制反转.从广义上来说,Spring处理其上下文中管理的组件的职责.只要组件减轻了职责,它们同时也被 ...
- java 长轮询_java – Spring中的长轮询
我们有一个独特的案例,我们需要与外部API接口,这需要我们长时间轮询他们的端点以获得他们所谓的实时事件. 问题是我们可能有多达80,000人/设备在任何给定时间点击此端点,监听事件,每个设备/人1个连 ...
- Spring集成文件轮询和测试
我最近实施了一个小项目,在该项目中,我们必须轮询文件夹中的新文件,然后在文件内容上触发服务流. Spring Integration非常适合此要求,因为它带有一个通道适配器 ,该适配器可以扫描文件夹中 ...
- .xhr长轮询_使用Spring 3.2的DeferredResult进行长轮询
.xhr长轮询 在我们的最后一集中 , Agile Cowboys Inc.的首席执行官刚刚雇用了Java / Spring顾问,方法是为他提供最初为女友购买的保时捷. 这位首席执行官的女友因失去保时 ...
最新文章
- ryu和mysql实现控制_openflow的初步认识及RYU控制器实践
- binutils工具集用法
- Matlab与数据结构 -- 搜索向量或矩阵中非零元素的位置
- 人工智能和物联网:智慧城市的交通管理
- 英伟达对ARM、Linux开放光线追踪,SDK已就位,网友:switch也能跑光追的节奏?...
- JavaScript类库
- 利用该0 day漏洞的攻击活动情况
- MyBatis:lazy loading
- 转载:由图片SEO想起
- Nginx的SSL相关指令
- centos 6.5装mysql 5.7,centos 6.5装mysql5.7
- 对volley的初步分析第一篇
- 95-136-070-源码-Operator-扩展有状态的operators
- 14寸笔记本电脑_华为笔记本电脑该如何选择?横向对比华为三款14寸笔记本
- python 与或非_Python |Python 从入门到精通(放弃)之注释、行与缩进、多行语句...
- Ubuntu18.04 下的Gif录制工具
- 阿里云短信接口方法使用
- 网吧WEB、游戏、影视服务器应用需求分析
- Endian 的由来
- Socket中send()函数和recv()函数详解
热门文章
- 安卓 on a null object reference_详解Object.prototype.__proto__
- pandas追加写入excel_[Excel]如果你爱Excel,请学好pandas
- spring react_使用Spring Cloud Gateway保护React式微服务
- 小度拆卸_拆卸invokedynamic
- primefaces_使用PrimeFaces开发数据导出实用程序
- 对象空指针_可选和对象:空指针救星!
- 返回值是内置类型 不能更改_选择通过更改内容类型返回的详细程度,第二部分...
- Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法
- scrapy立面parse_立面设计模式–设计观点
- soa学习路线_Web服务安全性和SOA路线图的人为维度