使用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.pswp.cn/news/370515.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370515.shtml
英文地址,請注明出處:http://en.pswp.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;…