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

        ?

        基于Spring Integration的定位終端與服務器網絡通信框架

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

        耿國光,張兆國,蔡明月

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

        0 引言

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

        Spring Integration 是Spring 開發(fā)的一個開源的輕量級ESB(Enterprise Service Bus,企業(yè)服務總線)框架,旨在提供企業(yè)系統(tǒng)集成解決方案[3]。它構建在Spring 控制反轉設計模式之上[4],擴展了傳統(tǒng)Spring 模型通過事件驅動和消息傳遞為中心的架構,以解決集成開發(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(消息通道)。消息通道是消息傳遞組件,它的作用是連接不同的消息終端,從而能夠實現(xiàn)消息在不同終端之間的傳遞。消息通道結構如圖1所示。

        圖1 消息通道

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

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

        (1)Transformer(消息轉換器)。消息轉換器是一種消息格式轉換終端,它能夠對消息的內容或結構進行轉換。比如它可以將消息負載從Integer 類型轉換成String 類型,也可以添加、修改或刪除消息頭中的值。

        (2)Filter(消息過濾器)。消息過濾器能夠對消息類型進行過濾,把滿足條件的消息發(fā)送到消息通道。

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

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

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

        圖2 通道適配器

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

        Spring Integration 提供對TCP 和UDP 網絡通信的支持,使得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 是反序列化方法返回的結果類型。

        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 消息類型的轉換。類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 配置消息網關定位終端與服務器建立TCP連接后,服務器需要配置消息網關以定義消息在服務器中的流向。消息網關配置如圖4所示。

        圖4 TCP網關配置

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

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

        圖5 服務激活器配置

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

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

        3 結束語

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

        猜你喜歡
        序列化適配器隊列
        如何建構序列化閱讀教學
        甘肅教育(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
        豐田加速駛入自動駕駛隊列
        新型水文測驗GPS適配器設計與應用
        Java 反序列化漏洞研究
        基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        美國麥格普公司新型M—LOK相機三腳架適配器
        輕兵器(2015年20期)2015-09-10 07:22:44
        国产自拍视频一区在线| 秋霞午夜无码鲁丝片午夜精品 | 99热在线精品播放| 日韩精品有码在线视频| 不卡av一区二区在线| 新婚人妻不戴套国产精品| 乌克兰粉嫩xxx极品hd| 国产精品99精品一区二区三区∴ | 亚洲AV秘 无码一区二区三区| 国产亚洲激情av一区二区| 丝袜美腿福利一区二区| 亚洲成av人在线播放无码| 日本伊人精品一区二区三区| 国产精品无码久久久久久久久久| 中文幕无线码中文字蜜桃| 亚洲AV秘 无码一区二区在线| 少妇人妻av一区二区三区| 日本最新视频一区二区| 精品国产免费一区二区三区| 色婷婷日日躁夜夜躁| 欧美自拍区| 国模精品二区| 国产99久久久国产精品免费| 91偷自国产一区二区三区| 成年av动漫网站18禁| www国产无套内射com| 久久国产精品不只是精品| 国产精品久久中文字幕亚洲| 中文字幕日韩人妻少妇毛片| 国产女人的高潮国语对白| 欧美精品中文| 在线观看免费视频发布白白色| 亚洲视频一区二区三区视频| 免费观看性欧美大片无片| 波多野结衣一区二区三区视频| 东京热东京道日韩av| 亚洲国产精品无码aaa片| 久久久久国产精品免费免费搜索| 99久久精品国产自在首页| 免费在线av一区二区| 久久久久久夜精品精品免费啦|