亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Spring Integration的定位終端與服務器網(wǎng)絡通信框架

        2021-04-01 09:27:12耿國光張兆國蔡明月
        鐵道運營技術(shù) 2021年2期
        關鍵詞:序列化適配器隊列

        耿國光,張兆國,蔡明月

        (1、2,廣西旅發(fā)科技有限公司,高級工程師,廣西 南寧,530028;3、中國鐵路南寧局集團有限公司 信息技術(shù)所,工程師,廣西 南寧,530029)

        0 引言

        在開發(fā)車輛監(jiān)控系統(tǒng)時,首先要完成的是建立服務器與定位終端的網(wǎng)絡通信,進而實現(xiàn)定位數(shù)據(jù)的解析、入庫、指令下發(fā)等工作。目前車輛監(jiān)管中使用最多的網(wǎng)絡通信框架有Mina 和Netty。Mina 是Apache 組織的一個項目,它為開發(fā)高性能和高可用性的網(wǎng)絡應用程序提供非常便利的框架。雖然Mina 處理數(shù)據(jù)能力很強,但無法做到高并發(fā),因為Mina 將所有的處理事件以輪詢方式全部放入同一個任務隊列中進行處理,當網(wǎng)絡一旦發(fā)生延遲就會造成隊列的阻塞[1]。Netty 是由JBoss 提供的一個Java開源框架,它對高并發(fā)的處理做了很大改進,它將隊列分成了任務隊列和延遲隊列[2],任務隊列中存放所有要執(zhí)行的任務,延遲隊列負責定時調(diào)度任務。

        Spring Integration 是Spring 開發(fā)的一個開源的輕量級ESB(Enterprise Service Bus,企業(yè)服務總線)框架,旨在提供企業(yè)系統(tǒng)集成解決方案[3]。它構(gòu)建在Spring 控制反轉(zhuǎn)設計模式之上[4],擴展了傳統(tǒng)Spring 模型通過事件驅(qū)動和消息傳遞為中心的架構(gòu),以解決集成開發(fā)問題。另外,Spring Integration基于XML Schema 的配置,能夠與Spring 框架和J2EE強大集成。

        1 Spring Integration主要組件

        Spring Integration 包含三個基本組件,分別是存儲信息的消息組件Message(消息)、消息處理組件Message Endpoints(消息終端)、用于連接消息終端的消息通道組件Message Channel(消息通道)。其中,消息終端組件和消息通道組件因其具體功能不同,又包含許多子組件。下面對一些核心組件進行介紹。

        1)Message(消息)。消息是信息存儲組件,可以在不同的消息終端之間進行傳遞,是最基本的信息單元。消息包括Header(消息頭)和Payload(消息負載)兩部分。消息頭存儲信息的屬性值,如消息id、消息有效時間和消息返回地址等。消息負載存儲信息本體,可以是任何類型的數(shù)據(jù),如XML、字符串或者java對象等。

        2)Message Channel(消息通道)。消息通道是消息傳遞組件,它的作用是連接不同的消息終端,從而能夠?qū)崿F(xiàn)消息在不同終端之間的傳遞。消息通道結(jié)構(gòu)如圖1所示。

        圖1 消息通道

        消息通道的作用是消息生產(chǎn)者將消息發(fā)送到消息通道,消息消費者從消息通道中獲取消息,從而實現(xiàn)了消息生產(chǎn)者和消費者之間的解耦。另外消息通道還提供了消息攔截功能,可以用來監(jiān)控消息。

        3)Message Endpoint(消息終端)。消息終端是用來處理消息的組件,下面介紹幾種常用的消息終端。

        (1)Transformer(消息轉(zhuǎn)換器)。消息轉(zhuǎn)換器是一種消息格式轉(zhuǎn)換終端,它能夠?qū)ο⒌膬?nèi)容或結(jié)構(gòu)進行轉(zhuǎn)換。比如它可以將消息負載從Integer 類型轉(zhuǎn)換成String 類型,也可以添加、修改或刪除消息頭中的值。

        (2)Filter(消息過濾器)。消息過濾器能夠?qū)ο㈩愋瓦M行過濾,把滿足條件的消息發(fā)送到消息通道。

        (3)Router(消息路由器)。消息路由器是一種消息路由處理終端,它根據(jù)消息的內(nèi)容決定消息的下一個處理終端,從而將消息發(fā)送到相應的消息通道,消息路由器不會改變原有消息的內(nèi)容。

        (4)Service Activator(服務激活器)。服務激活器是一個邏輯處理終端,它接收到輸入通道傳入的消息后可以調(diào)用應用程序接口來處理消息,并將處理結(jié)果新的消息發(fā)送至輸出通道。

        (5)Channel Adapter(通道適配器)。通道適配器是消息傳遞系統(tǒng)與消息生產(chǎn)者和消息消費者聯(lián)系的門戶,可以分為Inbound 類型和Outbound 類型,其中Inbound 類型通道適配器獲取消息源的消息,把消息傳入到消息通道。Outbound 類型通道適配器把消息通道中的消息傳給其它系統(tǒng)。通道適配器如圖2所示。

        圖2 通道適配器

        2 面向消息處理流程的TCP通信

        Spring Integration 提供對TCP 和UDP 網(wǎng)絡通信的支持,使得Spring Integration 可以基于TCP 協(xié)議或UDP 協(xié)議對車載定位終端進行集成。Spring Integration 可以把與每一個終端的通信都單獨封裝成一個線程處理,通過這種多線程處理機制很好地保障了對高并發(fā)的處理。

        2.1 配置TCP 連接Spring Integration 通過連接工廠與定位終端建立TCP 連接,其中連接工廠分為server 類型和client 類型。Server 類型連接工廠用于服務器端,它能夠監(jiān)聽tcp 連接請求,從而與客戶端建立連接。Client 類型連接工廠用于客戶端,能夠向服務器端發(fā)送tcp 連接請求。車載定位終端是Tcp 通信請求方,所以這里要使用server 類型的連接工廠。連接工廠的配置如圖3所示。

        圖3 連接工廠配置

        zdkGpsDeserializer 是自定義反序列化對象,用于實現(xiàn)終端上傳數(shù)據(jù)的解碼邏輯。 類ZdkGpsDeserializer 需要實現(xiàn)接口Deserializer<T>,并重寫deserialize(InputStream var1)方法,其中T 是反序列化方法返回的結(jié)果類型。

        zdkGpsSerializer 是自定義序列化對象,用于序列化發(fā)送到終端的數(shù)據(jù)。類ZdkGpsSerializer 需要實 現(xiàn) 接 口Serializer<T>,并 重 寫serialize(T var1,OutputStream var2)方法,其中類T 是定位終端接收的數(shù)據(jù)類型。

        zdkGpsConnectionMapper 是JMS 消息與Spring Integration 消息的映射器對象,該對象用于實現(xiàn)終端消息類型與Spring Integration 消息類型的轉(zhuǎn)換。類ZdkGpsConnectionMapper 需 要 繼 承 類TcpMessageMapper,并 重 寫Message<? >toMessage(TcpConnection connection, Map<String, Object>headers)方法。在toMessage 方法中既要實現(xiàn)終端消息的反序列化,還要記錄下終端與服務器的Tcp 連接對象,以便使用該連接對象向定位終端發(fā)送控制指令。

        組件<int-ip: tcp-connection-factory/>用來配置TCP連接工廠,配置的各屬性含義如表1所示。

        表1 連接工廠配置屬性

        2.2 配置消息網(wǎng)關定位終端與服務器建立TCP連接后,服務器需要配置消息網(wǎng)關以定義消息在服務器中的流向。消息網(wǎng)關配置如圖4所示。

        圖4 TCP網(wǎng)關配置

        標簽<int:channel/>定義了兩個消息通道:標簽<int-ip:tcp-inbound-gateway>用來定義tcp-inbound類型的網(wǎng)關。在該配置中,反序列化輸出的消息流進入通道zdkGpsInputChannel 中。發(fā)往定位終端的消息流則通過zdkGpsInputChannel 通道離開服務器。

        2.3 配置服務激活器服務器接收到定位終端發(fā)送的信息后,一般會向定位終端回復相應的信息以告知定位終端消息已經(jīng)收到。接收到的消息不同,需要回復的消息也不同,這就要根據(jù)接收到的消息動態(tài)的構(gòu)造回復信息。動態(tài)構(gòu)造回復消息過程可以通過服務激活器完成。服務激活器配置如圖5 所示。

        圖5 服務激活器配置

        標簽<int:service-activator>用來定義服務激活器。在該配置中通道zdkGpsInputChannel 中的消息流會傳入到類ZdkGpsMessageHandle 的方法dealMessage中進行處理。

        2.4 配置TcpConnection 事件監(jiān)聽當服務器與車載定位終端建立的TcpConnection 發(fā)生變化時,Spring Integration 會發(fā)送TcpConnectionEvent 事件。TcpConnectionEvent是ApplicationEvent的子類,能被ApplicationListener接收。當定位終端由于某些原因(沒有信號、終端斷電等)斷開與服務器連接時,服務器需要關閉連接并釋放該連接占用的資源。

        3 結(jié)束語

        本文基于Spring Integration 對TCP 的支持實現(xiàn)了服務器與定位終端的網(wǎng)絡通信。這種通信機制已經(jīng)在我司的車輛監(jiān)控平臺得到應用,通過對我司平臺下2000 輛車的實時監(jiān)控,這種框架能夠很好的保障服務器與定位終端通信的實時性以及定位終端的高并發(fā)性。目前Spring Integration 在TCP 通信方面應用較少,但是隨著基于Spring 的J2EE 框架應用越來越廣泛,Spring Integration 因其與Spring 的完美集成,其應用必將不斷擴大。

        猜你喜歡
        序列化適配器隊列
        如何建構(gòu)序列化閱讀教學
        甘肅教育(2020年14期)2020-09-11 07:58:36
        隊列里的小秘密
        基于多隊列切換的SDN擁塞控制*
        軟件(2020年3期)2020-04-20 00:58:44
        在隊列里
        適配器模式及其應用
        電子測試(2017年11期)2017-12-15 08:57:45
        豐田加速駛?cè)胱詣玉{駛隊列
        新型水文測驗GPS適配器設計與應用
        Java 反序列化漏洞研究
        基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        美國麥格普公司新型M—LOK相機三腳架適配器
        輕兵器(2015年20期)2015-09-10 07:22:44
        一本色道久久综合亚州精品| 国产精品污www一区二区三区 | 亚洲成aⅴ人片久青草影院| 双乳被一左一右吃着动态图| 久久99热精品免费观看欧美| 亚洲综合伊人久久综合| 国产精品亚洲一区二区三区| 人人妻人人澡人人爽精品欧美| 日韩AV无码一区二区三| 精品日本免费观看一区二区三区| 国产禁区一区二区三区| 国产精品久久久久久亚洲av| 任你躁国产自任一区二区三区| 国产精品一区一区三区| 18禁止进入1000部高潮网站| 久久中文字幕无码专区| 浪荡少妇一区二区三区| 一卡二卡国产av熟女| 朋友的丰满人妻中文字幕| 日韩av高清无码| 中文人妻av大区中文不卡| 日本精品久久不卡一区二区| 中国丰满人妻videoshd| 狠狠色狠狠色综合日日92| 久久五月精品中文字幕| 成午夜福利人试看120秒| 亚洲国产无套无码av电影| 日韩av中出在线免费播放网站| 中文字幕亚洲一区二区三区| 国产人妻大战黑人20p| 日韩毛片基地一区二区三区| 亚洲一区精品一区在线观看| 中文字幕一区二区人妻秘书| 天天鲁一鲁摸一摸爽一爽| 亚洲av日韩av一卡二卡| 国产乱淫h侵犯在线观看| 中国老熟女重囗味hdxx| 国产精品短视频| 人妻丰满精品一区二区| 国产美女精品视频线免费播放软件| 亚洲男同志gay 片可播放 |