日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
用SpringJMS使異步消息變得簡(jiǎn)單

異步處理通信是面向服務(wù)架構(gòu)(SOA)的重要部分,因?yàn)槠髽I(yè)中的許多系統(tǒng)通信,尤其是跟外部系統(tǒng)通信本來(lái)就是異步的。Java消息服務(wù)(JMS)就是用來(lái)編寫異步消息J2EE應(yīng)用的API。使用JMS API的傳統(tǒng)消息實(shí)現(xiàn)涉及到象這樣的一些步驟:查找對(duì)列連接工廠、隊(duì)列資源以及在實(shí)際發(fā)送和接受消息前,創(chuàng)建JMS會(huì)話(JMS session)。

堅(jiān)守“ 做人真誠(chéng) · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價(jià)值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都邊坡防護(hù)網(wǎng)小微創(chuàng)業(yè)公司專業(yè)提供成都企業(yè)網(wǎng)站定制營(yíng)銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計(jì)、底層架構(gòu)、網(wǎng)頁(yè)布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

Spring framework簡(jiǎn)化了用JEE組件(包括JMS)開發(fā)JMS應(yīng)用的工作。它提供了一個(gè)模板機(jī)制來(lái)隱藏典型的JMS實(shí)現(xiàn)細(xì)節(jié),所以開發(fā)者可以專注于消息處理任務(wù)而不用擔(dān)心怎樣創(chuàng)建、訪問(wèn)和釋放JMS資源。

本文用一個(gè)運(yùn)行在JBoss MQ server上的簡(jiǎn)單Web應(yīng)用概述了Spring JMS API和怎樣使用它異步處理(發(fā)送和接受)消息。我將對(duì)比JMS實(shí)現(xiàn)的傳統(tǒng)方法和Spring JMS實(shí)現(xiàn)方法,以顯示使用Spring JMS來(lái)處理消息是多么的簡(jiǎn)單和靈活。

異步消息和SOA

現(xiàn)實(shí)世界中,大多數(shù)Web請(qǐng)求是同步處理的。例如,當(dāng)用戶登陸一個(gè)站點(diǎn),他或她輸入用戶名和口令以及服務(wù)器識(shí)別登陸憑證。如果身份驗(yàn)證成功,程序讓用戶進(jìn)入站點(diǎn)。這里,登陸請(qǐng)求從客戶端被接受后,立即被處理。信用卡授權(quán)也是一個(gè)同步處理的例子;僅當(dāng)服務(wù)器核實(shí)了發(fā)送進(jìn)來(lái)的信用卡號(hào)是有效并且該客戶的帳號(hào)有足夠的信用額度后,才允許客戶繼續(xù)進(jìn)行下一步動(dòng)作。讓我們來(lái)考察一下訂單處理系統(tǒng)中的支付結(jié)算步驟。一旦系統(tǒng)核實(shí)了那個(gè)用戶的信用卡信息是正確的,而且?guī)羯嫌凶銐虻馁Y金,那么不需要等到支付細(xì)節(jié)和轉(zhuǎn)帳最終完成。支付結(jié)算用異步方式處理,如此客戶便可以繼續(xù)進(jìn)行結(jié)帳處理。

與典型的同步請(qǐng)求相比,異步處理用于需要長(zhǎng)時(shí)間來(lái)處理的請(qǐng)求。異步處理的另外一個(gè)例子是住房貸款處理應(yīng)用中,處理提交到AUS(Automated Underwriting System)的貸款請(qǐng)求。貸款人提交貸款申請(qǐng)后,抵押公司發(fā)送請(qǐng)求到AUS取得信用歷史信息。因?yàn)樵撜?qǐng)求要取得綜合詳細(xì)的信用報(bào)告如貸款人當(dāng)前和過(guò)去的信用帳戶,最近的支付以及其它金融詳細(xì)信息,所以從請(qǐng)求到獲得響應(yīng)常常需要很長(zhǎng)時(shí)間。對(duì)客戶端程序來(lái)說(shuō)開一個(gè)到服務(wù)器的連接并且長(zhǎng)時(shí)間等待響應(yīng)是沒有意義的。于是就有了異步通信;也就是,一旦請(qǐng)求被提交,它就被放入隊(duì)列里面并且客戶斷開服務(wù)器連接。然后,AUS服務(wù)從特定隊(duì)列摘取請(qǐng)求,處理它,把結(jié)果消息放入另外一個(gè)消息隊(duì)列。最后客戶程序從消息隊(duì)列摘取響應(yīng)結(jié)果繼續(xù)處理信用歷史結(jié)果信息。

JMS

如果用過(guò)JMS的話,會(huì)發(fā)現(xiàn)它類似寫JDBC或JCA代碼。它有創(chuàng)建或檢索JMS資源的樣板代碼,每當(dāng)你需要編寫一個(gè)新類來(lái)發(fā)送或接受消息時(shí),都得重復(fù)編寫那個(gè)樣本代碼。下面列出了傳統(tǒng)JMS實(shí)現(xiàn)涉及的步驟:
1、創(chuàng)建JNDI初始上下文context;
2、從JNDI上下文獲得隊(duì)列連接工廠;
3、從隊(duì)列連接工廠取得隊(duì)列Queue;
4、創(chuàng)建一個(gè)Session對(duì)象;
5、創(chuàng)建一個(gè)發(fā)送或接受對(duì)象;
6、利用第5部創(chuàng)建的發(fā)送或接受對(duì)象發(fā)送或接受消息;
7、處理完消息后,關(guān)閉所有JMS資源。

如你所見,只有第6步是處理消息的步驟。其他步驟都只是管理JMS資源,與實(shí)際業(yè)務(wù)需求無(wú)關(guān),但開發(fā)者不得不編寫和維護(hù)那些附加步驟代碼。

Spring  JMS

Spring框架提供一個(gè)模板機(jī)制來(lái)隱藏Java API細(xì)節(jié)。JEE開發(fā)者可用JDBCTemplate 和JNDITemplate類來(lái)分別訪問(wèn)后端數(shù)據(jù)庫(kù)和JEE資源(數(shù)據(jù)源,連接池)。JMS沒有異常。Spring提供了JMSTemplate類,所以開發(fā)者不必為JMS實(shí)現(xiàn)編寫樣本代碼。當(dāng)開發(fā)JMS應(yīng)用時(shí),Spring提供了一下一些優(yōu)勢(shì):
1、提供了一個(gè)JMS的抽象API,簡(jiǎn)化了JMS的使用。如:訪問(wèn)目的地(隊(duì)列或主體)和出版消息到特定目的地。
2、JEE開發(fā)者不必關(guān)心JMS不同版本之間的差異(如JMS 1.0.2 同 JMS 1.1);
3、開發(fā)者不必特定地處理JMS異常,因?yàn)镾pring為JMS代碼拋出的任何JMS異常提供了一個(gè)unchecked異常。

一旦你在JMS應(yīng)用中開始使用Spring,你將會(huì)欣賞到異步消息處理的簡(jiǎn)易性。Spring JMS框架提供了各種java類使JMS開發(fā)變得簡(jiǎn)單。


當(dāng)前標(biāo)題:用SpringJMS使異步消息變得簡(jiǎn)單
文章分享:http://www.5511xx.com/article/cdjshcj.html