999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于消息隊列異步通信機制在ECDS直連系統中的應用

2015-05-30 10:48:04王莉
寧波職業技術學院學報 2015年4期

王莉

摘 要: 設計了商業銀行行內的ECDS直連系統及其通訊層的接口,并通過消息隊列的異步訪問模式探討了ECDS直連系統與前置機之間的報文交換原理。結果表明:該通訊方式能夠保證系統穩定、可靠運行以及能較好的提高系統的效率。

關鍵詞: ECDS直連系統; 消息隊列; 異步訪問

中圖分類號: TP 393 文獻標志碼: A 文章編號: 1671-2153(2015)04-0065-04

1 ECDS直連系統

電子商業匯票(ECDS)系統的建成并運行,對我國的金融市場意義重大。作為金融業為系統參與者提供了多種接入方式以滿足不同規模的商業銀行、財務公司實現不同的業務需要。ECDS直連系統就是商業銀行以直連接入的方式與中國人民銀行ECDS系統對接,從而實現業務需求。

前置機系統[1]是商業銀行業務進出ECDS系統的唯一途徑,但是它只提供與中國人民銀行ECDS系統之間的業務通訊,而銀行行內系統與ECDS系統的對接問題要求自行解決。本文所指的商業銀行ECDS直連系統就是處于前置機和商業銀行之間的業務轉換和通訊系統,同時也是前置機系統和商業銀行行內系統之間的信息交互橋梁,它主要負責完成商業銀行的行內系統與前置機之間的數據交互。

2 ECDS直連系統通訊層接口設計

對于ECDS直連系統在商業銀行與前置機之間的報文交換,其通訊層的整體架構設計如圖1所示。

中國人民銀行ECDS系統與商業銀行行內系統交互數據的中間載體為隊列。對于行內系統發往前置機系統的往包,行內系統按要求自動生成報文號,并以規定的順序與格式把往包數據通過商業銀行電子匯票系統平臺端API函數寫入消息隊列。在經直連系統轉換處理時,該系統再以規定的格式與順序把往包報文從該隊列中讀出并設計組包發送。對于從前置機發往行內系統的來包,直連轉換系統以約定的格式和順序將來包內容寫入隊列,然后再由商業銀行的行內程序以規定的格式和順序將其從隊列中(通過API)讀出并處理。

對于AS/400的行內主機,隊列用DTAQ實現,對于AIX/SCO/HP等其他UNIX平臺的行內主機,隊列采用文件模擬實現隊列的功能。

AS/400的行內主機系統通過DTAQ與直連轉換系統進行數據交互,直連轉換系統不提供隊列操作的API函數。對于AIX/SCO/HP等其他UNIX平臺的行內主機系統,則向行內提供直連轉換系統API以實現與隊列的數據交互。

直連系統通過商業銀行電子匯票系統平臺端的API接口與ECDS單一前置機系統之間進行數據報的轉發。而在商業銀行電子匯票直連系統內部,通過SOCKET設置其應用程序端口,來實現行內系統與中國人民銀行ECDS系統平臺之間的數據傳輸。若商業銀行自身有MQ等消息中間件,則圖1中的通訊模塊可替換為消息中間件的方式實現行內系統與中國人民銀行ECDS系統平臺之間的數據傳輸。

3 消息隊列

3.1 分布式消息隊列的概念

在跨進程通信時,通常需要一個獨立的載體實現它們之間的消息傳遞。以隊列的方式來傳遞消息既具有數據的獨立性又存在進程間的連貫性。無論是在單機環境還是網絡環境,它都作為消息的載體,由一個個消息串連接而成。在局域網或是廣域網內,它能夠被所有經過授權的網絡節點所共享,如圖2所示。因此,把這一類消息隊列稱為分布式消息隊列[2]。由于消息隊列的特殊數據結構,使得分布在網絡環境中的各類節點在進行消息傳送時,都具有自己對數據的獨立管理和訪問功能;對于在C/S網絡環境下的數據訪問,分布式消息隊列模式仍然適用。

由于消息隊列的數據傳送要依靠其程序的API接口函數,所以在很多情況下,對網絡環境和單機環境API接口的兼容性要求很高。在網絡環境下,由于資源共享的優勢,服務器和客戶端需要頻繁傳送消息。該分布式消息隊列根據自身獨立存在的特點,能夠實現對數據獨立管理的功能,所以在它的支持下,通訊雙方不必擔心數據在通信層的傳送是否發生錯誤,只要專注于自己的業務數據即可。

3.2 分布式消息隊列中的API接口功能

行內系統與中國人民銀行前置機系統之間的數據交換,要通過消息隊列作為中間載體。在分布式消息隊列中,提供了大量API接口函數,以此來訪問或操作隊列上的數據。

下面在分布式網絡環境下,對這些API接口功能[3-4]和屬性特征進行詳細描述。

3.2.1 隊列的打開或創建

Mqd_t mq_open(const char*pathname,int oflag,const struct sigevent*notification.../*mode_t mode,struct mq_attr attr/);

對于任何進程訪問分布式消息隊列的第一步就是使用此函數建立或打開一個消息隊列,該消息隊列被打開后,除用于消息的發送與接收外,更重要的是方便日后隊列的管理。

在上述參數中pathname表示分布式環境下消息隊列的網絡路徑,oflag用于表示以讀或寫或讀寫的方式打開分布式消息隊列;當實際要求創建一個新隊列時(如已經指定O_CREATE標志),mode在用于隊列管理中起到了用戶身份鑒別的作用,Attr用于說明新建隊列的各類屬性特點。

3.2.2 發送報文消息

Int _send_(mqd_t mqdes, unsigned int prio struct mq_attr*attr,const struct sigevent*notification);

當消息隊列被創建或被打開后,其結果會返回一個描述字mqdes;創建隊列的發送方通過send函數對該描述字所代表的目標程序發送數據。當然發送方在發送數據的同時還可以通過參數attr指針來指定以下選項:消息的類型、事務還是非事務、傳遞的方式以及是否加密傳輸、是否保存日志等;同時,參數notification用于表示系統發送消息時的方式(同步發送或異步發送)。

3.2.3 接收報文消息

Int_receive_from_idsys(char*buf,int sync_flag);

對于消息隊列發送成功的數據,其目標程序所在的接收方,通過最初創建隊列時產生的描述字mqdes,接收報文消息,接收時需使用receive函數對其進行檢索篩選。其中參數buf表示接收到的報文放入buf中;sync_flag表示接收方檢索的方式,0表示異步接收,1表示同步接收;參數nonblock表示函數調用的方式。

4 異步報文處理模式

商業銀行的直連系統與中國人民銀行 ECDS 系統的報文交互,其處理流程為:直連系統將待發的報文進行組裝,并發送至消息隊列,經中國人民銀行前置機系統查詢后,對其報文做相應的轉換處理,發往中國人民銀行;同時中國人民銀行再通過前置機系統將ECDS系統處理的結果發送到消息隊列,最后商業銀行的直連系統得到消息隊列的響應報文并進行處理。在處理報文的過程中,分為實時報文處理和異步報文處理。

異步處理模式[5]:行內發送服務可多份(可以和網點交易服務捆在一起),但行內接受服務必須一個,且能將不同的同步響應準確返回到對應的網點交易服務。異步模式下,發送程序成功調用SEND_TO_IDSYS后,不用等待接收返回的9012報文,可以直接發送下一筆報文,這種模式支持多進程同時發送,如圖3所示。

在該模式下,一個完整的發送流程為:

(1) 組包;

(2) SEND_TO_IDSYS。

其源代碼為:

int SetHeadMsgNo(const char * msg_no);//必選,報文序號

int SetHeadMsgIP(const char * msg_ip);//必選,報文ip地址

int SetHeadMsgId(const char * msg_id);//必選,報文標示號

int SetHeadRefId(const char *ref_id);//必選,

報文參考號

int SetHeadWkdt(const char *wkdt); //必選,

工作日期,yyyymmdd

int SetHeadSndCode(const char *snd_code); //必選 發起節點代碼

int SetHeadRcvCode(const char *rcv_code); //必選 接收節點代碼

int SetHeadAppName(const char*app_name); //必選 應用名稱

int SetMsgVer(const char *msg_ver);//設置報文版本號

void SetMsgSndTim(void); //設置發送時間

void SetHeadInOut(const char * in_out);//必選,來帳往帳標識

功能:設置報文頭中字段的相關信息到buf中;

int SetPkgValue(const char *tag_name, const char *value);

功能:設置報文體信息;

void GetPkg(char *out_buf);

功能:獲得要發送的報文,獲得的報文存放在buf中;

int SEND_TO_IDSYS (char *send_buf);

功能:把組好的報文寫入隊列中。

異步模式下,接收程序調用RECV_FROM_IDS?鄄

YS時,必須設sync_flag = 0(或不設置,缺省值為0),同時接收程序將掃描接收隊列和回應隊列,即會接收到來帳指令或往賬的回應指令。對于不同的指令,接收程序必須分別處理。如對來賬指令,處理模式不變;對回應指令,則必須通過報文參考號(9012)或回應報文中的其他信息查找到原對應的往賬指令并相應處理。一個完整的接收流程為:

(1) RECV_FROM_IDSYS,sync_flag=0(缺省值);

(2) 解包并處理(包括mbfe返回的9012、來賬指令、其他異步回應);

(3) COMMIT_CURRENT_MSG。

5 結束語

本文所指的ECDS直連系統是商業銀行行內開發的獨立系統,起到行內系統與中國人民銀行ECDS系統之間數據交互的橋梁作用,它在通訊層與前置機之間的數據傳輸,本文主要以基于消息隊列的Socket通訊方式為主。其實,在很多金融信息平臺中,MQ中間件的應用也是很廣泛的,但是MQ中間件更適用于實時通訊環境,而本文對于報文的收發處理,主要以異步處理模式為主,所以Socket通訊方式更為合適。

參考文獻:

[1] 于會軍. 基于商場收銀POS一體化前置機系統的研究與實現[D]. 中南大學,2007.

[2] 盧本捷. 分布式消息隊列的理論、實現與應用[D]. 華中科技大學,2003.

[3] 丁靜. 基于Socket和消息隊列的中后臺接口通訊軟件的設計[J]. 大連民族學院學報,2006(3):65-68.

[4] 李光師. 如何在VB中利用Windows API調用其他應用程序[J]. 鞍山師范學院學報,2004(2):69-71.

[5] 何紅波,陸建德,丁衛平. 基于中間件MQSeries的消息隊列異步通信服務的應用研究[J]. 南通大學學報:自然科學版,2006(12):86-89.

(責任編輯:徐興華)

主站蜘蛛池模板: 美女被操91视频| 国产成人精品一区二区| 手机精品视频在线观看免费| 成人毛片免费观看| 日韩精品视频久久| 亚洲欧美激情小说另类| www亚洲天堂| 91视频国产高清| 亚洲天堂视频在线免费观看| 手机在线免费毛片| 亚洲av无码成人专区| 一本视频精品中文字幕| 日韩在线影院| 特级aaaaaaaaa毛片免费视频| 欧美激情福利| 亚洲国产天堂久久综合| 亚洲精品少妇熟女| 2021国产v亚洲v天堂无码| 国产在线专区| 亚洲黄色高清| 国产激情在线视频| 精品久久久久久中文字幕女| 亚洲一区二区在线无码| 日本成人不卡视频| 中日韩欧亚无码视频| 久热精品免费| 色综合久久久久8天国| 亚洲毛片一级带毛片基地| 91免费观看视频| 人妻夜夜爽天天爽| 91人妻日韩人妻无码专区精品| 国产va免费精品观看| 国产黄色片在线看| 国产亚洲一区二区三区在线| 亚洲综合久久成人AV| 欧美激情,国产精品| 国产成人区在线观看视频| 亚洲成人www| 国产成人综合久久精品尤物| 国产v欧美v日韩v综合精品| 欧洲日本亚洲中文字幕| 亚洲视屏在线观看| 午夜福利网址| 欧美啪啪视频免码| 成人精品在线观看| 91精品网站| 欧美无遮挡国产欧美另类| 午夜色综合| 国产91视频观看| 色婷婷电影网| 精品国产福利在线| 动漫精品中文字幕无码| 无码精品国产dvd在线观看9久| 国产精鲁鲁网在线视频| 国产资源站| 婷婷五月在线| 国产视频你懂得| 婷婷六月综合网| 婷婷综合在线观看丁香| 欧美日韩在线成人| 国产成人亚洲无码淙合青草| 国产精品女同一区三区五区| 就去吻亚洲精品国产欧美| 欧美激情综合| 成人欧美日韩| 免费av一区二区三区在线| 国产00高中生在线播放| 成人精品亚洲| 一区二区三区四区精品视频 | 国产永久免费视频m3u8| 国产精品色婷婷在线观看| 婷婷六月激情综合一区| 国产你懂得| 国产视频一区二区在线观看| 午夜久久影院| 特级欧美视频aaaaaa| 狠狠色成人综合首页| 天天综合色网| 少妇精品在线| 欧美在线黄| 国产乱视频网站| 免费无遮挡AV|