一种基于Netty实现金融系统协议通信的方法、系统和存储设备与流程

文档序号:29167375发布日期:2022-03-09 03:13阅读:354来源:国知局
一种基于Netty实现金融系统协议通信的方法、系统和存储设备与流程
一种基于netty实现金融系统协议通信的方法、系统和存储设备
技术领域
1.本发明涉及金融系统技术领域,特别涉及一种基于netty实现金融系统协议通信的方法、系统和存储设备。


背景技术:

2.金融体系中常用到iso体系的通信协议,为非明文的ascii或二进制报文,且常用的socket通信开发,多基于阻塞式io(blockingio)代码(或框架)
‑‑
以下简称bio;或非阻塞式io(non-blockingio)
‑‑
以下简称nio。
3.2、而常规业务系统多使用基于http协议的json格式,或其他xml,websocket协议报文开发。
4.现有的nio框架
‑‑
netty,仅对通信做了封装。实现集中处理两种协议间转换的服务能极大的方便我们开发,以及解决服务分散的问题。
5.现有使用netty协议的专利有:
6.cn201610357751《一种基于netty实现金融报文处理系统》
7.本发明公开了一种基于netty实现金融报文处理系统,该系统采用netty作为报文发送、接收、转发的底层框架,在项目应用中通过定制实现包括iso8583、xml、管理符、占位符、不定长、tlv、cop、内部嵌套、组合报文在内的报文间两两格式互转,实现报文多格式配置转换处理。该申请虽然实现了iso8583、xml、管理符、占位符、不定长、tlv、cop、内部嵌套、组合报文在内的报文的格式转换处理。却未实现iso与常用http协议间的互转。
8.cn201711115075:《一种多协议服务通信方法、装置以及电子设备》:
9.本发明实施例提供了一种多协议服务通信方法、装置以及电子设备,其中方法包括:接收客户端发送的通信协议请求,并对所述通信协议请求进行解码处理,得到目标数据;根据所述目标数据对应的目标协议的类型,以及各容器与各协议的对应关系,将所述目标数据映射到对应的目标容器中,在所述目标容器中解析所述目标数据,得到与所述目标数据对应的目标信息;通过所述目标协议将所述目标信息发送给所述客户端。其目标协议及容器对应关系需要在解码后的目标数据中才能得到,对于同种协议间的传输造成浪费,另一方面也造成报文的臃肿。
10.此外现有的nio框架
‑‑
netty,无断线重连机制,同步请求,空闲客户端连接回收等功能。缺少一个与iso协议打通并不断扩展新协议的系统。


技术实现要素:

11.鉴于上述问题,本技术提供了一种基于netty实现金融系统协议通信的方法,用以解决现有金融系统通信协议未实现iso与http协议间互转,及现有金融系统通信协议无断线重连机制等技术问题。具体技术方案如下:
12.一种基于netty实现金融系统协议通信的方法,包括步骤:
13.获取请求侧协议类型,解析请求报文得业务参数;
14.根据目标侧协议类型对所述业务参数进行封装;
15.根据不同请求方式发送报文至目标侧;
16.将获取到的响应按请求侧协议传回。
17.进一步的,所述“获取请求侧协议类型,解析请求报文得业务参数;根据目标侧协议类型对所述业务参数进行封装;”,具体还包括步骤:
18.若已知请求侧和目标侧各自的报文协议,则直接根据请求侧协议规范解析请求报文得业务参数;
19.根据容器中配置的请求侧与目标侧对应关系,获取目标侧报文协议,并将所述业务参数封装为目标侧可解析的报文。
20.进一步的,所述“获取请求侧协议类型,解析请求报文得业务参数;根据目标侧协议类型对所述业务参数进行封装;”,具体还包括步骤:
21.若为自定义报文协议,则获取请求报文中的请求侧标识,获取目标侧标识;
22.根据所述请求侧标识和所述目标侧标识查询容器中对应的请求和接受的协议标准;
23.解析请求报文的业务参数;
24.将所述业务参数按目标侧协议进行封装。
25.进一步的,所述“根据不同请求方式发送报文至目标侧”,具体还包括步骤:
26.若为异步请求则直接发送报文至目标侧;
27.若为同步请求则使用一预设字段作为同步请求的透传字段。
28.进一步的,所述“获取请求侧协议类型”之前,还包括步骤:
29.请求侧与目标侧通过适配服务建立socket连接;
30.当请求侧与目标侧连接断开时则触发重连机制;
31.请求侧协议类型包括:http协议或iso协议,目标侧协议类型包括:iso协议或http协议;
32.http协议基于spring框架,iso协议基于netty框架;
33.当所述请求侧协议类型为http协议时,所述请求侧包括:服务器;
34.当所述目标侧协议类型为iso协议时,所述目标侧包括:pos机和/或银联。
35.为解决上述技术问题,还提供了一种基于netty实现金融系统协议通信的系统,具体技术方案如下:
36.一种基于netty实现金融系统协议通信的系统,包括:请求端、目标端和适配服务端;
37.所述适配服务端分别连接所述请求端和所述目标端;
38.所述适配服务端用于:获取请求端协议类型,解析请求报文得业务参数;根据目标端协议类型对所述业务参数进行封装;根据不同请求方式发送报文至目标端;将获取到的响应按请求端协议传回。
39.进一步的,所述适配服务端还用于:
40.若已知请求端和目标端各自的报文协议,则直接根据请求端协议规范解析请求报文得业务参数;根据容器中配置的请求端与目标端对应关系,获取目标端报文协议,并将所
述业务参数封装为目标端可解析的报文;
41.若为自定义报文协议,则获取请求报文中的请求端标识,获取目标端标识;根据所述请求端标识和所述目标端标识查询容器中对应的请求和接受的协议标准;解析请求报文的业务参数;将所述业务参数按目标端协议进行封装。
42.进一步的,所述适配服务端还用于:
43.若为异步请求则直接发送报文至目标端;
44.若为同步请求则使用一预设字段作为同步请求的透传字段。
45.进一步的,所述适配服务端还用于:
46.在获取请求端协议类型前,请求端与目标端通过适配服务建立socket连接;
47.当请求端与目标端连接断开时则触发重连机制;
48.请求端协议类型包括:http协议或iso协议,目标端协议类型包括:iso协议或http协议;
49.http协议基于spring框架,iso协议基于netty框架;
50.当所述请求端协议类型为http协议时,所述请求端包括:服务器;
51.当所述目标端协议类型为iso协议时,所述目标端包括:pos机和/或银联。
52.为解决上述技术问题,还提供了一种存储设备,具体技术方案如下:
53.一种存储设备,其中存储有指令集,所述指令集用于执行:上述所提及的一种基于netty实现金融系统协议通信的方法的任意步骤。
54.本发明的有益效果是:一种基于netty实现金融系统协议通信的方法,包括步骤:获取请求侧协议类型,解析请求报文得业务参数;根据目标侧协议类型对所述业务参数进行封装;根据不同请求方式发送报文至目标侧;将获取到的响应按请求侧协议传回。通过以上方法,集成多种协议间通信,以配置化方式解决请求侧和目标侧的报文中转问题。包括了iso和http协议间的互转,而对于二者是同种协议时,因目标协议和容器的对应关系无需解码,故此不会带来报文的臃肿。
55.进一步的,基于netty框架实现高并发、高稳定的socket通信,在目标侧和请求侧进行连接过程中加入断线重连机制和同步请求,使得基于netty框架的iso协议能支持更多的功能。
56.上述发明内容相关记载仅是本技术技术方案的概述,为了让本领域普通技术人员能够更清楚地了解本技术的技术方案,进而可以依据说明书的文字及附图记载的内容予以实施,并且为了让本技术的上述目的及其它目的、特征和优点能够更易于理解,以下结合本技术的具体实施方式及附图进行说明。
附图说明
57.附图仅用于示出本技术具体实施方式以及其他相关内容的原理、实现方式、应用、特点以及效果等,并不能认为是对本技术的限制。
58.在说明书附图中:
59.图1为具体实施方式所述、一种基于netty实现金融系统协议通信的方法的流程图;
60.图2为具体实施方式所述已知请求侧和目标侧各自的报文协议的流程图;
61.图3为具体实施方式所述自定义报文协议的流程图;
62.图4为具体实施方式所述请求侧http协议和目标侧iso853协议的示意图;
63.图5为具体实施方式所述一种基于netty实现金融系统协议通信的系统的模块示意图;
64.图6为具体实施方式所述一种存储设备的模块示意图;
65.图7为具体实施方式所述银联iso接口示意图。
66.上述各附图中涉及的附图标记说明如下:
67.500、一种基于netty实现金融系统协议通信的系统,
68.501、请求端,
69.502、适配服务端,
70.503、目标端,
71.600、存储设备。
具体实施方式
72.为详细说明本技术可能的应用场景,技术原理,可实施的具体方案,能实现目的与效果等,以下结合所列举的具体实施例并配合附图详予说明。本文所记载的实施例仅用于更加清楚地说明本技术的技术方案,因此只作为示例,而不能以此来限制本技术的保护范围。
73.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中各个位置出现的“实施例”一词并不一定指代相同的实施例,亦不特别限定其与其它实施例之间的独立性或关联性。原则上,在本技术中,只要不存在技术矛盾或冲突,各实施例中所提到的各项技术特征均可以以任意方式进行组合,以形成相应的可实施的技术方案。
74.除非另有定义,本文所使用的技术术语的含义与本技术所属技术领域的技术人员通常理解的含义相同;本文中对相关术语的使用只是为了描述具体的实施例,而不是旨在限制本技术。
75.在本技术的描述中,用语“和/或”是一种用于描述对象之间逻辑关系的表述,表示可以存在三种关系,例如a和/或b,表示:存在a,存在b,以及同时存在a和b这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的逻辑关系。
76.在本技术中,诸如“第一”和“第二”之类的用语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何实际的数量、主次或顺序等关系。
77.在没有更多限制的情况下,在本技术中,语句中所使用的“包括”、“包含”、“具有”或者其他类似的表述,意在涵盖非排他性的包含,这些表述并不排除在包括所述要素的过程、方法或者产品中还可以存在另外的要素,从而使得包括一系列要素的过程、方法或者产品中不仅可以包括那些限定的要素,而且还可以包括没有明确列出的其他要素,或者还包括为这种过程、方法或者产品所固有的要素。
78.与《审查指南》中的理解相同,在本技术中,“大于”、“小于”、“超过”等表述理解为不包括本数;“以上”、“以下”、“以内”等表述理解为包括本数。此外,在本技术实施例的描述
中“多个”的含义是两个以上(包括两个),与之类似的与“多”相关的表述亦做此类理解,例如“多组”、“多次”等,除非另有明确具体的限定。
79.请参阅图1至图4,在本实施方式中,一种基于netty实现金融系统协议通信的方法可应用在一种基于netty实现金融系统协议通信的系统上,所述一种基于netty实现金融系统协议通信的系统包括:请求端、目标端和适配服务端。
80.在金融系统领域,对于pos机其常使用iso协议,一方面由于iso协议比较安全,一方面也由于iso协议更省流量。而对于与pos机互通信的服务器其使用的则为http协议,故此在金融系统领域,对于实现iso协议和http协议间的互转是非常重要的。
81.以下则结合附图对一种基于netty实现金融系统协议通信的方法展开具体说明:
82.步骤s101:获取请求侧协议类型,解析请求报文得业务参数。
83.步骤s102:根据目标侧协议类型对所述业务参数进行封装。
84.对于步骤s101和步骤s102具体还分为两种情况讨论,第一种为已知请求侧与目标侧各自的报文协议,请参阅图2:
85.步骤s201:若已知请求侧和目标侧各自的报文协议,则直接根据请求侧协议规范解析请求报文得业务参数。
86.步骤s201:根据容器中配置的请求侧与目标侧对应关系,获取目标侧报文协议,并将所述业务参数封装为目标侧可解析的报文。
87.第二种为自定义报文协议,请求报文中携带请求侧和目标侧标识,并包含具体业务报文,使两端通信更加弹性,可根据配置更换协议,请参阅图3:
88.步骤s301:若为自定义报文协议,则获取请求报文中的请求侧标识,获取目标侧标识。请求侧标识例如可记为srcid,目标侧标识可记为desid。
89.步骤s302:根据所述请求侧标识和所述目标侧标识查询容器中对应的请求和接受的协议标准。
90.步骤s303:解析请求报文的业务参数。
91.步骤s304:将所述业务参数按目标侧协议进行封装。
92.将业务参数按目标侧协议类型封装好后,则执行步骤s103和步骤s104:
93.步骤s103:根据不同请求方式发送报文至目标侧。
94.步骤s104:将获取到的响应按请求侧协议传回。
95.其中对应步骤s103的请求方式可能是异步请求,也可能是同步请求,若为异步请求则直接发送报文至目标侧;若为同步请求则使用一预设字段作为同步请求的透传字段。以下会结合图4展开具体说明。
96.图4中以请求侧为http协议平台,并基于spring框架,目标侧为iso8583协议,并基于netty框架为例展开说明:
97.请求侧与目标侧通过适配服务建立socket连接;
98.当请求侧与目标侧连接断开时则触发重连机制;
99.当为异步请求时,http协议平台发送http协议的业务请求至适配服务,适配服务将其转换为iso8583报文,若二者连接已存在,则检查连接的可用性,若可用,则发送报文,iso8583协议平台对接收到的报文进行业务处理,并向适配服务响应iso8583报文,适配服务解析报文,将其转换为http协议格式,并返回http协议的响应至http协议平台。
100.当为同步请求时,http协议平台发送http协议的业务请求,挂起回调,适配服务将其转换为iso8583报文,其采用syncid作为同步请求的透传字段,将syncid存入缓存,若二者连接已存在,则检查连接的可用性,若可用,则发送带syncid参数的报文,iso8583协议平台对接收到的报文进行业务处理,并向适配服务响应iso8583报文,附带syncid,适配服务解析报文,将其转换为http协议格式,根据syncid查缓存,取出回调方法,并返回http协议的响应至http协议平台。
101.一种基于netty实现金融系统协议通信的方法,包括步骤:获取请求侧协议类型,解析请求报文得业务参数;根据目标侧协议类型对所述业务参数进行封装;根据不同请求方式发送报文至目标侧;将获取到的响应按请求侧协议传回。通过以上方法,集成多种协议间通信,以配置化方式解决请求侧和目标侧的报文中转问题。包括了iso和http协议间的互转,而对于二者是同种协议时,因目标协议和容器的对应关系无需解码,故此不会带来报文的臃肿。
102.进一步的,基于netty框架实现高并发、高稳定的socket通信,在目标侧和请求侧进行连接过程中加入断线重连机制和同步请求,使得基于netty框架的iso协议能支持更多的功能。
103.请参阅图4至图5,在本实施方式中,一种基于netty实现金融系统协议通信的系统500,包括:请求端501、目标端503和适配服务端502;
104.所述适配服务端502分别连接所述请求端501和所述目标端503;
105.所述适配服务端502用于:获取请求端501协议类型,解析请求报文得业务参数;根据目标端503协议类型对所述业务参数进行封装;根据不同请求方式发送报文至目标端503;将获取到的响应按请求端501协议传回。
106.进一步的,所述适配服务端502还用于:
107.若已知请求端501和目标端503各自的报文协议,则直接根据请求端501协议规范解析请求报文得业务参数;根据容器中配置的请求端501与目标端503对应关系,获取目标端503报文协议,并将所述业务参数封装为目标端503可解析的报文;
108.若为自定义报文协议,则获取请求报文中的请求端501标识,获取目标端503标识;根据所述请求端501标识和所述目标端503标识查询容器中对应的请求和接受的协议标准;解析请求报文的业务参数;将所述业务参数按目标端503协议进行封装。
109.进一步的,所述适配服务端502还用于:
110.若为异步请求则直接发送报文至目标端503;
111.若为同步请求则使用一预设字段作为同步请求的透传字段。
112.进一步的,所述适配服务端502还用于:
113.在获取请求端501协议类型前,请求端501与目标端503通过适配服务建立socket连接;
114.当请求端501与目标端503连接断开时则触发重连机制;
115.请求端501协议类型包括:http协议或iso协议,目标端503协议类型包括:iso协议或http协议;
116.http协议基于spring框架,iso协议基于netty框架;
117.当所述请求端501协议类型为http协议时,所述请求端501包括:服务器;
118.当所述目标端503协议类型为iso协议时,所述目标端503包括:pos机和/或银联。银联也具有基于iso协议的接口,见对应链接:https://download.csdn.net/download/jiehu3156/9599561?utm_source=iteye_new,及图7。
119.以下结合图4展开说明:
120.以请求端501为http协议平台,并基于spring框架,目标端503为iso8583协议,并基于netty框架为例展开说明:
121.请求端501与目标端503通过适配服务端502建立socket连接;
122.当请求端501与目标端503连接断开时则触发重连机制;
123.当为异步请求时,http协议平台发送http协议的业务请求至适配服务端502,适配服务端502将其转换为iso8583报文,若二者连接已存在,则检查连接的可用性,若可用,则发送报文,iso8583协议平台对接收到的报文进行业务处理,并向适配服务端502响应iso8583报文,适配服务端502解析报文,将其转换为http协议格式,并返回http协议的响应至http协议平台。
124.当为同步请求时,http协议平台发送http协议的业务请求,挂起回调,适配服务端502将其转换为iso8583报文,其采用syncid作为同步请求的透传字段,将syncid存入缓存,若二者连接已存在,则检查连接的可用性,若可用,则发送带syncid参数的报文,iso8583协议平台对接收到的报文进行业务处理,并向适配服务端502响应iso8583报文,附带syncid,适配服务端502解析报文,将其转换为http协议格式,根据syncid查缓存,取出回调方法,并返回http协议的响应至http协议平台。
125.一种基于netty实现金融系统协议通信的系统500,包括:请求端501、目标端503和适配服务端502;所述适配服务端502分别连接所述请求端501和所述目标端503;所述适配服务端502用于:获取请求端501协议类型,解析请求报文得业务参数;根据目标端503协议类型对所述业务参数进行封装;根据不同请求方式发送报文至目标端503;将获取到的响应按请求端501协议传回。通过以上系统,集成多种协议间通信,以配置化方式解决请求端501和目标端503的报文中转问题。包括了iso和http协议间的互转,而对于二者是同种协议时,因目标协议和容器的对应关系无需解码,故此不会带来报文的臃肿。
126.进一步的,基于netty框架实现高并发、高稳定的socket通信,在目标端503和请求端501进行连接过程中加入断线重连机制和同步请求,使得基于netty框架的iso协议能支持更多的功能。
127.请参阅图6,在本实施方式中,一种存储设备600的具体实施方式如下:
128.一种存储设备600,其中存储有指令集,所述指令集用于执行:获取请求侧协议类型,解析请求报文得业务参数。
129.根据目标侧协议类型对所述业务参数进行封装。
130.以上还分为两种情况讨论,第一种为已知请求侧与目标侧各自的报文协议:
131.若已知请求侧和目标侧各自的报文协议,则直接根据请求侧协议规范解析请求报文得业务参数。
132.根据容器中配置的请求侧与目标侧对应关系,获取目标侧报文协议,并将所述业务参数封装为目标侧可解析的报文。
133.第二种为自定义报文协议,请求报文中携带请求侧和目标侧标识,并包含具体业
务报文,使两端通信更加弹性,可根据配置更换协议:
134.若为自定义报文协议,则获取请求报文中的请求侧标识,获取目标侧标识。请求侧标识例如可记为srcid,目标侧标识可记为desid。
135.根据所述请求侧标识和所述目标侧标识查询容器中对应的请求和接受的协议标准。
136.解析请求报文的业务参数。
137.将所述业务参数按目标侧协议进行封装。将业务参数按目标侧协议类型封装好后,根据不同请求方式发送报文至目标侧;将获取到的响应按请求侧协议传回。
138.其中对应的请求方式可能是异步请求,也可能是同步请求,若为异步请求则直接发送报文至目标侧;若为同步请求则使用一预设字段作为同步请求的透传字段。以下会结合图4展开具体说明。
139.图4中以请求侧为http协议平台,并基于spring框架,目标侧为iso8583协议,并基于netty框架为例展开说明:
140.请求侧与目标侧通过适配服务建立socket连接;
141.当请求侧与目标侧连接断开时则触发重连机制;
142.当为异步请求时,http协议平台发送http协议的业务请求至适配服务,适配服务将其转换为iso8583报文,若二者连接已存在,则检查连接的可用性,若可用,则发送报文,iso8583协议平台对接收到的报文进行业务处理,并向适配服务响应iso8583报文,适配服务解析报文,将其转换为http协议格式,并返回http协议的响应至http协议平台。
143.当为同步请求时,http协议平台发送http协议的业务请求,挂起回调,适配服务将其转换为iso8583报文,其采用syncid作为同步请求的透传字段,将syncid存入缓存,若二者连接已存在,则检查连接的可用性,若可用,则发送带syncid参数的报文,iso8583协议平台对接收到的报文进行业务处理,并向适配服务响应iso8583报文,附带syncid,适配服务解析报文,将其转换为http协议格式,根据syncid查缓存,取出回调方法,并返回http协议的响应至http协议平台。
144.一种存储设备600,其中存储有指令集,所述指令集用于执行:获取请求侧协议类型,解析请求报文得业务参数;根据目标侧协议类型对所述业务参数进行封装;根据不同请求方式发送报文至目标侧;将获取到的响应按请求侧协议传回。通过以上存储设备600,集成多种协议间通信,以配置化方式解决请求侧和目标侧的报文中转问题。包括了iso和http协议间的互转,而对于二者是同种协议时,因目标协议和容器的对应关系无需解码,故此不会带来报文的臃肿。
145.进一步的,基于netty框架实现高并发、高稳定的socket通信,在目标侧和请求侧进行连接过程中加入断线重连机制和同步请求,使得基于netty框架的iso协议能支持更多的功能。
146.最后需要说明的是,尽管在本技术的说明书文字及附图中已经对上述各实施例进行了描述,但并不能因此限制本技术的专利保护范围。凡是基于本技术的实质理念,利用本技术说明书文字及附图记载的内容所作的等效结构或等效流程替换或修改产生的技术方案,以及直接或间接地将以上实施例的技术方案实施于其他相关的技术领域等,均包括在本技术的专利保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1