亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用Spring JMS使異步消息變得簡單

2019-11-18 13:41:51
字體:
來源:轉載
供稿:網友

  異步處理通信是面向服務架構(SOA)的重要部分,因為企業中的許多系統通信,尤其是跟外部系統通信本來就是異步的。java消息服務(JMS)就是用來編寫異步消息J2EE應用的API。使用JMS API的傳統消息實現涉及到象這樣的一些步驟:查找對列連接工廠、隊列資源以及在實際發送和接受消息前,創建JMS會話(JMS session)。

  SPRing framework簡化了用JEE組件(包括JMS)開發JMS應用的工作。它提供了一個模板機制來隱藏典型的JMS實現細節,所以開發者可以專注于消息處理任務而不用擔心怎樣創建、訪問和釋放JMS資源。

  本文用一個運行在JBoss MQ server上的簡單Web應用概述了Spring JMS API和怎樣使用它異步處理(發送和接受)消息。我將對比JMS實現的傳統方法和Spring JMS實現方法,以顯示使用Spring JMS來處理消息是多么的簡單和靈活。

  異步消息和SOA

  現實世界中,大多數Web請求是同步處理的。例如,當用戶登陸一個站點,他或她輸入用戶名和口令以及服務器識別登陸憑證。假如身份驗證成功,程序讓用戶進入站點。這里,登陸請求從客戶端被接受后,立即被處理。信用卡授權也是一個同步處理的例子;僅當服務器核實了發送進來的信用卡號是有效并且該客戶的帳號有足夠的信用額度后,才答應客戶繼續進行下一步動作。讓我們來考察一下訂單處理系統中的支付結算步驟。一旦系統核實了那個用戶的信用卡信息是正確的,而且帳戶上有足夠的資金,那么不需要等到支付細節和轉帳最終完成。支付結算用異步方式處理,如此客戶便可以繼續進行結帳處理。

  與典型的同步請求相比,異步處理用于需要長時間來處理的請求。異步處理的另外一個例子是住房貸款處理應用中,處理提交到AUS(Automated Underwriting System)的貸款請求。貸款人提交貸款申請后,抵押公司發送請求到AUS取得信用歷史信息。因為該請求要取得綜合具體的信用報告如貸款人當前和過去的信用帳戶,最近的支付以及其它金融具體信息,所以從請求到獲得響應經常需要很長時間。對客戶端程序來說開一個到服務器的連接并且長時間等待響應是沒有意義的。于是就有了異步通信;也就是,一旦請求被提交,它就被放入隊列里面并且客戶斷開服務器連接。然后,AUS服務從特定隊列摘取請求,處理它,把結果消息放入另外一個消息隊列。最后客戶程序從消息隊列摘取響應結果繼續處理信用歷史結果信息。

  JMS

  假如用過JMS的話,會發現它類似寫JDBC或JCA代碼。它有創建或檢索JMS資源的樣板代碼,每當你需要編寫一個新類來發送或接受消息時,都得重復編寫那個樣本代碼。下面列出了傳統JMS實現涉及的步驟:

  1、創建JNDI初始上下文context;

  2、從JNDI上下文獲得隊列連接工廠;

  3、從隊列連接工廠取得隊列Queue;

  4、創建一個Session對象;

  5、創建一個發送或接受對象;

  6、利用第5部創建的發送或接受對象發送或接受消息;

  7、處理完消息后,關閉所有JMS資源。

  如你所見,只有第6步是處理消息的步驟。其他步驟都只是治理JMS資源,與實際業務需求無關,但開發者不得不編寫和維護那些附加步驟代碼。

  Spring JMS

  Spring框架提供一個模板機制來隱藏Java API細節。JEE開發者可用JDBCTemplate 和JNDITemplate類來分別訪問后端數據庫和JEE資源(數據源,連接池)。JMS沒有異常。Spring提供了JMSTemplate類,所以開發者不必為JMS實現編寫樣本代碼。當開發JMS應用時,Spring提供了一下一些優勢:

  1、提供了一個JMS的抽象API,簡化了JMS的使用。如:訪問目的地(隊列或主體)和出版消息到特定目的地。

  2、JEE開發者不必關心JMS不同版本之間的差異(如JMS 1.0.2 同 JMS 1.1);

  3、開發者不必特定地處理JMS異常,因為Spring為JMS代碼拋出的任何JMS異常提供了一個unchecked異常。

  一旦你在JMS應用中開始使用Spring,你將會欣賞到異步消息處理的簡易性。Spring JMS框架提供了各種java類使JMS開發變得簡單。

用Spring JMS使異步消息變得簡單(圖一)
點擊查看大圖

表1,Spring JMS類

  隨后的部分,我將具體解釋表1中的類(如JmsTemplate, DestinationResolver,和 MessageConverter)。   JMSTemplate

  JmsTemplate提供了幾個helper方法來執行基本操作。開始使用JmsTemplate前,有必要知道JMS提供者支持哪種JMS規范。JBoss AS 4.0.2 和 WebLogic 8.1服務器支持JMS1.0.2規范。WebLogic 服務器 9.0包含JMS1.1支持。JMS1.1統一了PTP和Pub/Sub編程接口。有了這個改變,開發者可以創建一個事務會話,然后在同一個JMS事務中,從Queue(PTP)接受消息和發送一個消息到Topic(Pub/Sub)。JMS1.1向后兼容JMS1.0,因此基于JMS1.0編寫的代碼仍然能跟JMS1.1工作。

  JmsTemplate提供各種方法來接收和發送消息。表2是方法列表。

用Spring JMS使異步消息變得簡單(圖二)
點擊查看大圖

表2。JMS模板方法

  使用JNDI上下文存儲和檢索目的地。當配置Spring應用上下文時,我們用JndiObjectFactoryBean獲得JMS目的地引用。DestinationResolver用來解析目的地名稱到一個JMS目的地,當應用有許多目的地時,那是很有幫助的。DynamicDestinationResolver(缺省DestinationResolver實現)用于解析動態目的地。

  MessageConverter接口定義了java對象和JMS消息之間轉換的契約。使用轉換器,應用代碼可以專注于業務對象,不用操心它是如何代表JMS消息的。SimpleMessageConverter(和SimpleMessageConverter102)是缺省MessageConverter實現。它們用于將String、字節數組((byte[])、Map、Serializable對象分別轉換成JMS TextMessage、JMS BytesMessage,JMS MapMessage,JMS ObjectMessage。你可以編寫MessageConverter接口的定制實現并結合xml綁定框架如JAXB, Castor, Commons Digester, XMLBeans, 或 XStream來轉換XML文檔到TextMessage。

  樣本應用

  我將用一個樣本貸款應用處理系統(叫LoanProc)來說明怎樣在JMS應用中使用Spring。作為貸款處理的一部分,LoanProc發送貸款具體資料(loan ID, borrower name, borrower's SSN, loan eXPiration date, and loan amount)從AUS系統請求信貸歷史。為讓例子簡單一點,我們將基于兩個參數:信用評分和貸款數量來獲得信貸歷史具體資料。讓我們假定處理信用檢查請求的業務規則如下:

  1、假如貸款數量等于或小于$500,000,那么貸款人必須至少有一個“good”信用(例如,貸款人的信用評分在680到699之間);

  2、假如貸款數量超過$500,000,那么貸款人必須至少要有一個“very good”信用,這意味他/她的信用評分超過700。

  貸款應用Use Case

  貸款請求處理Use Case由下列步驟組成:

  1、用戶在貸款申請web頁面輸入貸款具體資料并提交貸款申請;

  2、然后程序發送貸款具體資料到AUS系統取得信用歷史具體資料。用發送請求到名叫CreditRequestSendQueue的消息隊列來完成。

  3、AUS系統從隊列摘取貸款具體資料并用貸款參數來從數據庫檢索信用歷史信息;

  4、然后AUS系統用找到的貸款人信用歷史信息創建一個新的消息并發送到名叫CreditRequestReceiveQueue的消息隊列;

  5、最后LoanProc從接收消息隊列摘取響應消息并處理貸款申請,決定申請是被核準還是拒絕。

  應用中,在同樣的JBoss MQ server中配置了兩個消息隊列。Use Case用序列圖1表示如下:

用Spring JMS使異步消息變得簡單(圖三)
點擊查看大圖

圖1:貸款處理應用的序列圖

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
另类视频在线观看| 国产一区二区三区在线观看视频| 一区二区三区视频免费在线观看| 国产在线视频91| 日韩在线www| 久久久久久久久91| 最近2019中文字幕在线高清| 亚洲国产成人久久综合| 国产精品va在线播放我和闺蜜| 久久频这里精品99香蕉| 欧美日韩国产精品一区二区不卡中文| 日韩在线观看av| 精品福利樱桃av导航| 精品国产成人在线| 中文字幕日韩电影| 1769国内精品视频在线播放| 粉嫩老牛aⅴ一区二区三区| 国产精品大陆在线观看| 国产成人av在线播放| 中文字幕av一区二区| 国产精品老牛影院在线观看| 国产欧美中文字幕| 奇米一区二区三区四区久久| 伦理中文字幕亚洲| 日日骚久久av| 亚洲小视频在线| 久久亚洲综合国产精品99麻豆精品福利| 国产精品久久久久免费a∨| 色久欧美在线视频观看| 亚洲精品99久久久久中文字幕| 久久资源免费视频| 精品福利视频导航| 欧美成人精品在线观看| 欧美精品久久久久久久| 亚洲电影免费在线观看| 久久国产精品视频| 亚洲福利视频专区| 色与欲影视天天看综合网| 久久久久久久久久久成人| 欧美激情亚洲激情| 55夜色66夜色国产精品视频| 色综合色综合网色综合| 成人字幕网zmw| 日韩精品久久久久久福利| 亚洲成色777777在线观看影院| 精品久久久久久中文字幕| 久久精品久久久久久国产 免费| 国产日韩综合一区二区性色av| 韩国三级电影久久久久久| 欧美日韩亚洲一区二| 久久亚洲国产成人| 久久精品99久久香蕉国产色戒| 美日韩精品免费观看视频| 精品久久久久久久久久| 欧美专区国产专区| 激情懂色av一区av二区av| 97视频在线免费观看| 性欧美亚洲xxxx乳在线观看| 97精品国产97久久久久久春色| 日韩精品在线观看一区| 国内精品视频一区| 欧美亚洲成人免费| 亚洲日本中文字幕免费在线不卡| 性欧美激情精品| 欧美激情小视频| 亚洲精品xxxx| 欧美日韩美女视频| 久久成年人视频| 中文字幕在线观看亚洲| 国产精品久久久久久久久影视| 久久的精品视频| 久久久久久一区二区三区| 亚洲午夜色婷婷在线| 91在线视频一区| 亚洲一级黄色av| 亚洲一区二区三区777| 久久在精品线影院精品国产| 97在线观看免费高清| 欧美在线一级视频| 欧美日韩一区二区三区在线免费观看| 国产亚洲精品一区二555| 国产噜噜噜噜久久久久久久久| 欧美日韩性视频| 国产成人jvid在线播放| 国产精品一区二区久久国产| 久久久综合av| 日韩高清有码在线| 亚洲天堂av女优| 日韩欧美一区二区三区久久| 亚洲美女黄色片| 亚洲美女中文字幕| 亚洲iv一区二区三区| 国内精久久久久久久久久人| 法国裸体一区二区| 国产成人aa精品一区在线播放| 日韩电影中文字幕在线观看| 亚洲精品一区二区三区婷婷月| 91亚洲精品一区| 国产欧美精品日韩| 精品久久久香蕉免费精品视频| 97久久超碰福利国产精品…| 日韩免费不卡av| 国产精品永久免费在线| 日韩人体视频一二区| 国产精品视频中文字幕91| 91精品久久久久久久久不口人| 日韩欧美高清在线视频| 日本sm极度另类视频| 亚洲图片制服诱惑| 在线视频亚洲欧美| 欧美多人爱爱视频网站| 中文字幕在线看视频国产欧美在线看完整| 国产精品欧美日韩一区二区| 庆余年2免费日韩剧观看大牛| 亚洲国产精品久久久久| 国产精品手机播放| 97久久久久久| 尤物yw午夜国产精品视频| 日韩亚洲一区二区| 亚洲精品综合久久中文字幕| 久久久久国产一区二区三区| y97精品国产97久久久久久| 欧美性在线视频| 国产欧美一区二区三区久久| 国产97在线视频| 亚洲精品电影网在线观看| 亚洲大尺度美女在线| 中文字幕亚洲一区二区三区五十路| 国产精品一区二区三区在线播放| 欧美日韩aaaa| 亚洲美女视频网站| 97福利一区二区| 国产亚洲aⅴaaaaaa毛片| 91成人天堂久久成人| 久久久天堂国产精品女人| 成人在线视频网| 中文字幕av一区二区| 国产99久久久欧美黑人| 欧美做受高潮电影o| 国产成人精品av在线| 亚洲乱码av中文一区二区| 91精品免费看| 欧美成人免费观看| 主播福利视频一区| 精品调教chinesegay| 亚洲无限乱码一二三四麻| 91精品国产自产在线老师啪| 亚洲欧美中文字幕在线一区| 黄色精品在线看| 国产成人精品a视频一区www| 日韩人体视频一二区| 亚洲欧美日韩综合| 国产精品入口免费视频一| 91精品久久久久久久久不口人| 久久激情五月丁香伊人| 欧美亚洲国产精品| 国产精品普通话| 亚洲精品久久久久久久久久久久| 国产成人av网址| 欧美大奶子在线| 亚洲国产精彩中文乱码av| 国产一区二中文字幕在线看| 国产精品激情av在线播放| 日韩有码在线观看|