使用Spring Integration轮询http端点

如果您想用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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python模块离线安装_离线安装db2的python模块ibm_db

1、为什么要离线安装 没网&#xff0c;在银行工作&#xff0c;服务器环境配置&#xff0c;完全离线&#xff08;本来五分钟搞定的事情&#xff0c;非要搞一天。我服&#xff01;&#xff01;&#xff09; 2、安装步骤 视情况而定。 3。一个下载db2的client包&#xff0c;官网下…

Jmeter 场景设计

今天的业务场景是&#xff1a; 1.管理员登录后台---登录成功后添加一个某类型的产品---产品添加成功后&#xff0c;再为该产品添加10个排期。 2.管理员登录后台--登录成功后添加多个不同类型产品---产品全部添加完成后&#xff0c;依次为所有产品添加10个排期。 这是两种不同的…

Android IPC机制(五)用Socket实现跨进程聊天程序

1.Socket简介 Socket也称作“套接字“&#xff0c;是在应用层和传输层之间的一个抽象层&#xff0c;它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。它分为流式套接字和数据包套接字&#xff0c;分别对应网络传输控制层的TCP和UDP协议。TCP协…

ArcGIS 网络分析[4] 网络数据集深入浅出之连通性、网络数据集的属性及转弯要素...

前面介绍完了如何创建网络数据集、如何使用网络分析功能&#xff0c;当然还有的读者会迷惑于一些更深层次的问题&#xff0c;比如网络数据集的连通性问题等。 因为不可能面面俱到&#xff0c;我只能挑重点来阐述&#xff0c;我觉得网络数据集的连通性、属性和转弯是初学者中比较…

java获取byte 长度_java获取字节的长度.

我们经常要获取中文,数字,或者英文字符所占字节的长度,下面就列出各种编码格式下所占字节的长度:代码如下:package pack.java.midea.dao;import java.io.UnsupportedEncodingException;/*** 测试;* author zhouhaitao* 2012-5-17*/public class Test {/*** param args* throws …

Batoo JPA –比领先的JPA提供商快15倍

介绍 我早在2000年代就喜欢JPA 1.0。 我甚至在稳定版本发布之前就将其与EJB 3.0一起使用。 我非常喜欢它&#xff0c;因此我为JBoss 3.x实现贡献了一些零碎的部分。 那时我们公司规模还很小。 创建新功能和应用程序比性能更重要&#xff0c;因为我们有很多想法&#xff0c;我…

python软件是哪个国家的品牌_有哪些好用的软件被国人误认为是外国研发的?

国产软件被标榜上了英文&#xff0c;即便不是英文&#xff0c;用拼音写出来&#xff0c;也会有人误认为是国外的软件。因为这样可以显得高大上&#xff0c;为什么我们会有这样的想法&#xff0c;是崇洋媚外吗&#xff0c;并不是&#xff0c;而是之前的国产软件的确有不少让我们…

简单的Session案例 —— 一次性验证码

一次性验证码的主要目的就是为了限制人们利用工具软件来暴力猜测密码&#xff0c;其原理与利用Session防止表单重复提交的原理基本一样&#xff0c;只是将表单标识号变成了验证码的形式&#xff0c;并且要求用户将提示的验证码手工填写进一个表单字段中&#xff0c;而不是通过表…

[BZOJ2064]分裂

[BZOJ2064]分裂 试题描述 背景&#xff1a; 和久必分&#xff0c;分久必和。。。 题目描述&#xff1a; 中国历史上上分分和和次数非常多。。通读中国历史的WJMZBMR表示毫无压力。 同时经常搞OI的他把这个变成了一个数学模型。 假设中国的国土总和是不变的。 每个国家都可以用他…

CSS3选择器

基本选择器 回顾选择器 通配符选择器元素选择器类选择器ID选择器后代选择器新增基本选择器 子元素选择器相邻兄弟选择器通用兄弟选择器群组选择器 子元素选择器 概念&#xff1a;子元素选择器只能选择某元素的子元素 语法&#xff1a;父元素 > 子元素 &#xff08;Fathe…

eclipse java工程目录_转载:Eclipse下的java工程目录

对新手来讲&#xff0c;一个Java工程内部的多个文件夹经常会让大家困惑。更可恶的是莫名其妙的路径问题&#xff0c;在Eclipse编写Java程序中&#xff0c;出现频率最高的错误很可能就是路径问题。这些问题原因其实都是一个&#xff0c;就是关于Java工程内的文件结构理解不清&am…

作为JBoss AS 7模块运行Drools 5.4.0 Final

Drools 5引入了业务逻辑集成平台&#xff0c;该平台为规则&#xff0c;工作流和事件处理提供了统一的集成平台。 它是从头开始设计的&#xff0c;因此每个方面都是一流的公民&#xff0c;毫不妥协。 Drools 5已分为4个主要子项目&#xff1a; Drools Guvnor&#xff08;BRMS …

postgres 支持的线程数_线程池被打满了怎么处理呢,你是否真的了解线程池?

0、前言线程池&#xff0c;顾名思义就是线程的池子&#xff0c;在每次需要取线程去执行任务的时候&#xff0c;没必要每次都创建新线程执行&#xff0c;线程池就是起着维护线程的作用&#xff0c;当有任务的时候就取出一个线程执行&#xff0c;如果任务执行完成则把线程放回到池…

[树形DP]没有上司的舞会

题目链接 思考 首先本题中的关系是一种树形结构&#xff0c;而且符号最优子结构和无后效性&#xff0c;所以可以进行记忆化搜索。 那么首先要在这颗树中选出一个点作为根节点&#xff0c;按照习惯我们将没有父节点的点作为根节点。 接下来要思考的是 状态&#xff1a; dp[i][0…

网页自适应

1.viewport标签 基本语法&#xff1a; <meta name”viewport” content”widthdevice-width,initial-scale1” /> 上面这行代码的意思是&#xff0c;面积的100%&#xff0c;网页宽度默认等于屏幕宽度&#xff08;widthdevice-width&#xff09;, 原始缩放比例&#x…

java 大数处理

头文件&#xff1a;import java.util.*;import java.math.*; Scanner cin Scanner (System.in);//读入while(cin.hasNext())//等价于!EOFncin.nextInt();//读入一个int型的数ncin.nextBigInteger();//读入一个大整数 输出&#xff1a; System.out.print(n);//打印nSystem.out.…

java provider_Java SPI(Service Provider Interface)

//ServiceLoader实现了Iterable接口&#xff0c;可以遍历所有的服务实现者public final class ServiceLoaderimplements Iterable{//查找配置文件的目录private static final String PREFIX "META-INF/services/";//表示要被加载的服务的类或接口private final Clas…

带有自定义注释的Java注释教程

Java注释提供有关代码的信息&#xff0c;并且它们对所注释的代码没有直接影响。 在本教程中&#xff0c;我们将学习Java注释&#xff0c;如何编写自定义注释 &#xff0c;注释用法以及如何使用反射来解析注释 。 注释是在Java 1.5中引入的&#xff0c;现在它已在Hibernate&…

mybatis通用mapper_全网最全Mapper解析,附实操代码帮你更好理解

今天给大家介绍一位老朋友当你第一次接触Java开发的时候&#xff0c;这个老朋友就和你形影不离&#xff0c;当你要进行ORM的时候&#xff0c;单表的增删改查&#xff0c;这位老朋友给了你极大的帮助&#xff0c;不知道你想到他了吗&#xff1f;对&#xff0c;这就是通用mapper&…

初尝微信小程序2-基本框架

基本框架&#xff1a; .wxml &#xff1a;页面骨架 .wxss &#xff1a;页面样式 .js &#xff1a;页面逻辑 描述一些行为 .json &#xff1a;页面配置 创建一个小程序之后&#xff0c;app.js,app.json,app.wxss是必须的&#xff0c;而且名字也不能随意更改&#xff0c;…