CN115103041A - 一种基于fix协议实现业务的方法及系统 - Google Patents
一种基于fix协议实现业务的方法及系统 Download PDFInfo
- Publication number
- CN115103041A CN115103041A CN202210840601.8A CN202210840601A CN115103041A CN 115103041 A CN115103041 A CN 115103041A CN 202210840601 A CN202210840601 A CN 202210840601A CN 115103041 A CN115103041 A CN 115103041A
- Authority
- CN
- China
- Prior art keywords
- service
- fix
- message
- protocol
- fix message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000012545 processing Methods 0.000 claims abstract description 53
- 230000006978 adaptation Effects 0.000 claims abstract description 11
- 238000004806 packaging method and process Methods 0.000 claims abstract description 10
- 238000004458 analytical method Methods 0.000 claims abstract description 6
- 230000007246 mechanism Effects 0.000 claims description 19
- 238000000354 decomposition reaction Methods 0.000 claims description 5
- 230000000903 blocking effect Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 abstract description 4
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000008520 organization Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于FIX协议实现业务的方法及系统,该方法包括:接收FIX报文;解析获取FIX报文中的协议号和业务类型,抽象封装FIX报文;通过自定义注解方式,根据FIX报文协议号和业务类型定位具体的业务实施单元,完成FIX报文协议号和业务类型的适配;业务实施单元完成业务逻辑处理。本发明采用的是一种基于自定义注解实现的方法,利用模板模式、策略模式及类对象反射原理将业务处理逻辑单元和FIX多协议版本进行解耦,促使业务平台业务逻辑处理与FIX报文解析实现独立,以此完成FIX多协议兼容、多业务种类报文适配的功能。本方法还能降低业务平台的部署运行成本以及业务运行故障发生率。
Description
技术领域
本发明属于互联网技术领域,具体涉及一种基于FIX协议实现业务的方法及系统。
背景技术
金融信息交换协议(Financial Information eXchange Protocol,简称FIX协议)是由国际FIX协会组织提供的一个开放式协议,目的是推动国际贸易电子化的进程,在各类参与者之间,包括投资经理、经纪人,买方、卖方建立起实时的电子化通讯协议,用于促进与安全交易相关的信息交换。目前FIX协议已经有8个版本,分别是FIX 4.0,FIX 4.1,FIX4.2,FIX 4.3,FIX 4.4,FIX 5.0,FIX 5.0SP1,FIX 5.1SP1。
而FIX协议的多版本也带来了如下一些问题:
1、基于跨境业务平台的交易方式,各交易所与跨境业务平台应使用相同版本的FIX协议,但业务平台要对接多个交易所或清算机构,各个交易所及清算机构所使用的FIX协议版本并不一致,因此,这将会带来多版本、多业务种类的FIX报文信息。
2、随着业务平台业务不断发展扩充,跨境业务平台将受理不断增长的业务种类(跨境支付、资金冻结、资金解冻、退款、交易扣收、融资贷款、资金账户查询、资金交易结果通知等等),跨境业务平台对各个版本的FIX协议兼容性要求不断增加,由此带来跨境业务平台的部署成本和维护难度越来越大。
发明内容
为解决上述问题,本发明的目的在于提供一种基于FIX协议实现业务的方法及系统。
本发明目的通过以下技术方案实现:
根据本发明的一个方面,提供一种基于FIX协议实现业务的方法,所述方法包括以下步骤:
接收FIX报文,所述FIX报文为字符串的形式,包含协议号、业务类型和业务数据信息;
解析获取FIX报文中的协议号和业务类型,抽象封装FIX报文;
通过自定义注解方式,根据FIX报文协议号和业务类型定位具体的业务实施单元,完成FIX报文协议号和业务类型的适配;
业务实施单元完成业务逻辑处理。
FIX报文由交易机构发送,所述交易机构包括但不限于清算所、证券所、交易所等,交易机构向业务平台发送FIX报文,FIX报文以字符串的形式上送,字符串内容包含有FIX协议号、业务类型和业务数据信息(包括挂单订单号、挂单金额、卖方客户编号、卖方所属清算成员等),在FIX报文的扩展使用中,基于FIX协议,业务数据(字段)不做限制,即交易机构也可以上送双方约定的自定义字段参数完成业务数据上送。
进一步地,所述自定义注解包括第一自定义注解和第二自定义注解;
所述第一自定义注解注解定义业务实现类,并通过Key=Value存储业务实现类对象信息,其中,Key用于存储协议号和业务类型拼接而成的字符串,Value用于存储业务实现类对象值对象信息;
所述第一自定义注解还注解定义name属性,其中name=业务类型;
所述第二自定义注解包含Filed和FieldType枚举类型两个属性,其中Filed值为FIX报文中的业务类型,FieldType涵盖所有FIX报文包含实体对应的业务数据。
进一步地,所述接收FIX报文前,还包括:
加载自定义注解的业务实现类,并将所有标记有该注解的类进行缓存。
业务平台基于SpringBoot而实施,通过建立AbstractFixMessageHandleCommonFactory工厂类实现InitializingBean接口,业务平台启动时,首先进行Java类扫描工作,扫描平台中包含第一自定义注解@FixMessageHandleCommon自定义注解的业务实现类,并将扫描加载的业务实现类装载进入HashMap中,采用键值对存储业务实现类对象信息,其中,Key用于存储协议号和业务类型拼接而成的字符串(即Key=Version_BussinessType),Value用于存储业务实现类对象值对象信息(即Value=FixMessageHandleConfig.class)。FixMessageHandleConfig值对象包含clazz(业务实现类对象值)、messageClazz(业务实现类对象属性值,如姓名、银行账号、开户日期等)、messageFieldConfigs(属性包含业务实现类对象Field信息以及Type等信息,便于后续将报文信息转换为具体实现对象)。
采用HashMap方式存储包括但不限于使用结构化数据库存储(MySQL/Oracle/SQLServer…)、非结构化存储(Redis/MemCache…)。使用HashMap缓存相对数据库存储好处在于,避免每次交易都访问数据库,可以降低对数据库的依赖;而且HashMap运行于JVM内存中,读取速度更快,对于系统并发能力提供更好的支撑。
进一步地,所述接收FIX报文包括:
通过QuickFIX的消息分流器对各发送端的套接字进行异步非阻塞式监听;
接收到交易机构FIX报文后,根据FIX报文消息来源以及报文中携带的会话ID查找对应机构的会话信息;
检查会话序号是否连续;
若连续,则进入下一步;若不连续,则返回错误报文,并要求发送端重新发送。
进一步地,所述解析获取FIX报文中的协议号和业务类型,包括:
截取FIX报文Header信息,获取FIX报文的协议号和业务类型;
拆分字符串,完成Key=Value的分解。
第一自定义注解@FixMessageHandleCommon还注解定义name属性,用于定义各FIX报文业务类型,如:挂单申请业务(name=2006)、议价申请业务(name=2007)等;业务平台接收上送的FIX报文时,截取FIX报文前35个字符,得到该FIX报文的协议号和业务类型,并将字符串拆分,完成Key=Value的分解。
进一步地,所述抽象封装FIX报文,包括:
基于自定义注解,通过Key=Value模式将FIX报文向业务实体Object进行转换。
业务实现类接收报文转换实体Object Field由第二自定义注解@FixFieldConfig注解定义,该自定义注解包含Filed和FieldType枚举类型两个属性,其中,Filed值为FIX报文中业务类型定义,如2022、2023等;FiledType包含String、Int、Double、Char、Boolean等基础数据类型,涵盖了所有FIX报文包含实体对应的业务数据。由此,业务平台基于Porxcy反射原理,遍历业务类所定义的@FixFieldConfig属性,通过FIX报文中的Key=Value值模式,将报文值对应到Filed和FiledType属性中,完成FIX报文转换统一实体,便于后续获取业务数据信息。
进一步地,所述根据FIX报文协议号和业务类型定位具体的业务实施单元,包括:
根据自定义注解中协议号和业务类型属性定位到从缓存中获取的具体业务实现类对象。
业务平台完成FIX报文转换统一实体后,根据第一自定义注解@FixMessageHandleCommon中Version和BusinessType属性定位到HashMap中获取Value值信息,并由HashMap中的Value,获取到业务实现类对象信息,通过类对象加载,获取到具体业务实现类对象。
进一步地,所述业务实施单元完成业务逻辑处理,包括:
根据定位的业务实现类对象,通过动态反射原理,调用对应业务逻辑方法,进行业务逻辑处理;
所述业务实现类对象统一继承于一抽象基类,该基类定义统一业务处理步骤,如:业务属性完整性检测、业务处理、业务异常处理、业务处理结果反馈等。
业务平台业务实现类对象使用模板模式和策略模式,统一继承AbstractFixMessageHandleCommon父类,父类中定义了业务处理逻辑单元,业务平台完成业务实现类对象转换,调用父类Run方法,开始执行业务逻辑处理。
进一步地,当有新的FIX报文协议号更新,或有新的业务类型增加时,则同步更新业务实现类。
基于上述技术方案,当有业务增加或协议变更维护时,业务平台只需要同步更新业务实现类,而不会对业务逻辑处理发生变动,从而降低了业务平台的部署运行成本,同时降低了业务运行故障发生率。
根据本发明的另一方面,提供一种基于FIX协议实现业务的系统,所述系统包括以下模块:
接收模块:用于接收FIX报文;
解析模块:用于解析获取FIX报文中的协议号和业务类型,抽象封装FIX报文;
定位模块:用于通过自定义注解方式,根据FIX报文协议号和业务类型定位具体的业务实施单元;
调用执行模块:用于业务实施单元调用业务逻辑方法,完成业务逻辑处理。
与现有技术相比,本发明具有以下优点及有益效果:
(1)本发明采用的是一种基于自定义注解实现的方法,通过提取FIX报文中的版本协议号以及业务类型编码,基于动态反射原理可以查找到当前已编写的各FIX协议版本对应的业务实现类,可动态定位指定FIX协议版本和业务类型完成业务逻辑处理。
(2)本发明利用模板模式、策略模式及Java的类对象反射原理将业务处理逻辑单元和FIX多协议版本进行解耦,促使业务平台业务逻辑处理与FIX报文解析实现独立,以此完成FIX多协议兼容、多业务种类报文适配的功能;当有业务增加或协议变更维护时,业务平台只需要同步更新业务实现类,而不会对业务逻辑处理发生变动,从而降低了业务平台的部署运行成本,同时降低了业务运行故障发生率。
(3)本发明采用HashMap缓存而不是数据库存储,避免每次交易都访问数据库,可以降低对数据库的依赖;而且HashMap运行于JVM内存中,读取速度更快,对于系统并发能力提供更好的支撑。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于FIX协议实现业务的方法步骤示意图。
图2为本发明一实施例业务平台接收FIX报文的步骤示意图。
图3为本发明一实施例基于FIX协议实现业务的方法步骤示意图。
图4为本发明基于FIX协议实现业务的系统模块示意图。
图5为本发明一实施例业务平台加载自定义注解的业务实现类流程示意图。
图6为本发明一实施例适配FIX报文协议号和业务类型的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1
如图1和图2所示,本实施例提供一种基于FIX协议实现业务的方法,该方法包括以下步骤:
S1、业务平台接收交易机构发送的FIX报文。
具体地,FIX报文是以字符串形式上送,字符串内容包含有FIX协议号、业务类型和业务数据信息,业务数据信息如挂单订单号、挂单申请时间、挂单金额、卖方客户编号、卖方所属清算成员等。在FIX报文的扩展使用中,基于FIX协议,业务数据字段不做限制,即交易机构也可上送双方约定自定义字段参数,完成业务数据上送。
具体地,业务平台接收交易机构发送的FIX报文包括如下步骤:
S11、业务平台通过QuickFIX的MessageCracker(消息分流器)对各交易机构发送端的Socket(套接字)进行异步非阻塞式监听;
S12、业务平台接收到交易机构FIX报文后,根据FIX报文消息来源以及报文中携带的会话ID查找对应机构的会话信息;
S13、业务平台检查会话序号是否连续;
S14、若连续,则进入下一步;若不连续,则返回错误报文,并要求交易机构重新发送。
业务平台检查会话序号连续,则进入下一步的解析FIX报文的步骤。
S2、业务平台解析获取FIX报文中的协议号和业务类型,抽象封装FIX报文。
具体地,业务平台接收到FIX报文后,截取FIX报文的Header信息(前35字符),得到协议号和业务类型;基于自定义注解定义协议号和业务类型属性,可差异化解析FIX报文,并将FIX报文进行抽象封装转换为统一业务实体属性Object,完成FIX报文差异化内容的兼容格式化。
S3、业务平台通过自定义注解方式,根据FIX报文协议号和业务类型定位具体的业务实施单元,完成FIX报文协议号和业务类型的适配。
具体地,业务平台根据FIX报文协议号和业务类型编码经自定义注解工具类转换,找到对应业务实现类;根据业务实现类中的属性信息(协议号和业务类型)自动定位到具体业务实现类对象,完成FIX报文协议号和业务类型的适配。
S4、业务实施单元完成业务逻辑处理。
具体地,业务平台根据定位到的具体业务实现类对象,通过动态反射原理,活动类对象信息,调用对应业务逻辑处理方法,完成业务逻辑处理。业务实现类对象统一继承于一抽象基类,该基类用于定义统一业务处理步骤,如:业务属性完整性检测、业务处理、业务异常处理、业务处理结果反馈等。
业务实施单元完成业务逻辑处理后,业务平台与交易机构发送端自身保存的会话编号+1。
需要说明的是,在以上实施过程中,当有新的FIX报文协议号更新,或有新的业务类型增加时,则同步更新业务实现类。
基于上述技术方案,当有业务增加或协议变更维护时,业务平台只需要同步更新业务实现类,而不会对业务逻辑处理发生变动,从而降低了业务平台的部署运行成本,同时降低了业务运行故障发生率。
本实施例采用的是一种基于自定义注解实现的方法,通过提取FIX报文中的版本协议号以及业务类型编码,基于动态反射原理可以查找到当前已编写的各FIX协议版本对应的业务实现类,可动态定位指定FIX协议版本和业务类型完成业务逻辑处理。
实施例2
如图2、图3、图5和图6所示,本实施例提供一种基于FIX协议实现业务的方法,该方法包括以下步骤:
S0、业务平台加载自定义注解的业务实现类,并将所有标记有该注解的类进行缓存。
具体地,在本实施例中,业务平台基于SpringBoot而实施,通过建立AbstractFixMessageHandleCommonFactory工厂类实现InitializingBean接口,业务平台启动时,首先进行Java类扫描工作,扫描平台中包含@FixMessageHandleCommon自定义注解的业务实现类,并将扫描加载的业务实现类装载进入HashMap中,采用键值对存储业务实现类对象信息,其中Key=Version_BussinessType,Value=FixMessageHandleConfig.class,如Key=4.4_2006。FixMessageHandleConfig值对象包含clazz(业务实现类对象值)、messageClazz(业务实现类对象属性值,如姓名、银行账号、开户日期等)、messageFieldConfigs(属性包含业务实现类对象Field信息以及Type等信息,便于后续将报文信息转换为具体实现对象)。
采用HashMap方式存储包括但不限于使用结构化数据库存储(MySQL/Oracle/SQLServer…)、非结构化存储(Redis/MemCache…)。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
HashMap是基于哈希表的Map接口的实现,此实现提供所有可选的映射操作,并允许使用null值和null键。除了非同步和允许使用null之外,HashMap类与Hashtable大致相同。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。迭代collection视图所需的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。
本实施例使用HashMap缓存相对数据库存储好处在于,避免每次交易都访问数据库,可以降低对数据库的依赖;而且HashMap运行于JVM内存中,读取速度更快,对于系统并发能力提供更好的支撑。
S1、业务平台接收交易机构发送的FIX报文,所述FIX报文为字符串的形式,包含协议号、业务类型和业务数据信息。
在本实施例中,交易机构包括但不限于清算所、证券所、交易所等。在同一类跨境业务中,不同交易机构上送的FIX报文协议号可能会有所不同,对应同类业务FIX报文业务数据也会有所不同。例如:对于碳配额议价申请业务,甲交易机构使用FIX 4.4协议,乙交易商使用FIX 5.0协议,对于议价订单编号,甲使用2049字段上送,而乙使用2048字段上送,那么业务处理逻辑需要同时兼容这两家机构的FIX报文业务数据。
具体地,FIX报文是以字符串形式上送,字符串内容包含有FIX协议号、业务类型和业务数据信息,业务数据信息如挂单订单号、挂单申请时间、挂单金额、卖方客户编号、卖方所属清算成员等。在FIX报文的扩展使用中,基于FIX协议,业务数据字段不做限制,即交易机构也可上送双方约定自定义字段参数,完成业务数据上送。
具体地,业务平台接收交易机构发送的FIX报文包括如下步骤:
S11、业务平台通过QuickFIX的消息分流器对各交易机构发送端的套接字进行异步非阻塞式监听;
S12、业务平台接收到交易机构FIX报文后,根据FIX报文消息来源以及报文中携带的会话ID查找对应机构的会话信息;
S13、业务平台检查会话序号是否连续;
S14、若连续,则进入下一步;若不连续,则返回错误报文,并要求交易机构重新发送。
业务平台检查会话序号连续,则进入下一步的解析FIX报文的步骤。
S2、业务平台解析获取FIX报文中的协议号和业务类型,抽象封装FIX报文。
业务平台提供第一自定义注解@FixMessageHandleCommon,注解定义name属性,其中name=BussinessType;截取FIX报文Header信息,获取FIX报文的协议号和业务类型,拆分字符串,完成Key=Value的分解。
具体地,业务平台提供@FixMessageHandleCommon自定义注解,该注解定义name属性,用于定义各FIX报文业务类型,如:挂单申请业务(name=2006)、议价申请业务(name=2007)等;业务平台接收上送的FIX报文时,截取FIX报文前35个字符,得到该FIX报文的协议号和业务类型,并将字符串拆分,完成Key=Value的分解。
业务平台提供第二自定义注解@FixFieldConfig,注解包含Filed和FieldType枚举类型两个属性,其中Filed值为FIX报文中的BussinessType,FieldType涵盖所有FIX报文包含实体对应的业务数据。
业务实现类接收报文转换实体Object Field由@FixFieldConfig自定义注解定义,该自定义注解包含Filed和FieldType枚举类型两个属性,其中,Filed值为FIX报文中业务类型定义,如2022、2023等;FiledType包含String、Int、Double、Char、Boolean等基础数据类型,涵盖了所有FIX报文包含实体对应的业务数据。由此,业务平台基于Porxcy反射原理,遍历业务类所定义的@FixFieldConfig属性,通过FIX报文中的Key=Value值模式,将报文值对应到Filed和FiledType属性中,实现FIX报文向业务实体Object进行转换,便于后续获取业务数据信息。
S3、业务平台通过自定义注解方式,根据FIX报文协议号和业务类型定位具体的业务实施单元,完成FIX报文协议号和业务类型的适配。
具体地,根据第一自定义注解@FixMessageHandleCommon中Version和BusinessType属性定位到从HashMap中获取的具体业务实现类对象。
在本实施例中,业务平台完成FIX报文转换统一实体后,根据自定义注解@FixMessageHandleCommon中Version和BusinessType属性定位到HashMap中获取Value值信息,并由HashMap中的Value,获取到业务实现类对象信息,通过类对象加载,获取到具体业务实现类对象,完成FIX报文协议号和业务类型的适配。
S4、业务平台业务实施单元完成业务逻辑处理。
具体地,业务平台根据定位的业务实现类对象,通过动态反射原理,活动类对象Class信息,调用对应业务逻辑方法,进行业务逻辑处理;业务平台业务实现类对象统一继承于AbstractFixMessageHandleCommon抽象基类,该基类定义统一业务处理步骤,如:业务属性完整性检测、业务处理、业务异常处理、业务处理结果反馈等。
在本实施例中,业务平台业务实现类对象使用模板模式和策略模式,统一继承AbstractFixMessageHandleCommon父类,父类中定义了业务处理逻辑单元,业务平台完成业务实现类对象转换,调用父类Run方法,开始执行业务逻辑处理。
策略模式提供了管理相关的算法族的办法。策略类的等级结构定义了一个算法或行为族。恰当使用继承可以把公共的代码转移到父类里面,从而避免重复的代码,策略模式提供了可以替换继承关系的办法。继承可以处理多种算法或行为。如果不使用策略模式,那么使用算法或行为的环境类就可能会有一些子类,每一个子类提供一个不同的算法或行为。但是,这样一来算法或行为的使用者就和算法或行为本身混在一起。决定使用哪一种算法或采取哪一种行为的逻辑就和算法或行为的逻辑混合在一起,从而不可能再独立演化。继承使得动态改变算法或行为变得不可能。
模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式。让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤。
业务实施单元完成业务逻辑处理后,业务平台与交易机构发送端自身保存的会话编号+1。
需要说明的是,在以上实施过程中,当有新的FIX报文协议号更新,或有新的业务类型增加时,则同步更新业务实现类。
本实施例采用的是一种基于自定义注解实现的方法,通过提取FIX报文中的版本协议号以及业务类型编码,基于动态反射原理可以查找到当前已编写的各FIX协议版本对应的业务实现类,可动态定位指定FIX协议版本和业务类型完成业务逻辑处理。
本实施例利用模板模式、策略模式及Java的类对象反射原理将业务处理逻辑单元和FIX多协议版本进行解耦,促使业务平台业务逻辑处理与FIX报文解析实现独立,以此完成FIX多协议兼容、多业务种类报文适配的功能;当有业务增加或协议变更维护时,业务平台只需要同步更新业务实现类,而不会对业务逻辑处理发生变动,从而降低了业务平台的部署运行成本,同时降低了业务运行故障发生率。
实施例3
如图4所示,根据本发明的另一方面,本实施例提供一种基于FIX协议实现业务的系统,包括以下模块:
接收模块:用于接收FIX报文。
在本实施例中,FIX报文是由交易机构以字符串形式上送,字符串内容包含有FIX协议号、业务类型和业务数据信息,业务数据信息如挂单订单号、挂单申请时间、挂单金额、卖方客户编号、卖方所属清算成员等。
需要说明的是,在FIX报文的扩展使用中,基于FIX协议,业务数据字段不做限制,即交易机构也可上送双方约定自定义字段参数,完成业务数据上送。
解析模块:用于解析获取FIX报文中的协议号和业务类型,抽象封装FIX报文。
在本实施例中,业务平台接收到FIX报文后,截取FIX报文的Header信息(前35字符),得到协议号和业务类型;基于自定义注解定义协议号和业务类型属性,可差异化解析FIX报文,并将FIX报文进行抽象封装转换为统一业务实体属性Object,完成FIX报文差异化内容的兼容格式化。
定位模块:用于通过自定义注解方式,根据FIX报文协议号和业务类型定位具体的业务实施单元。
在本实施例中,业务平台根据FIX报文协议号和业务类型编码经自定义注解工具类转换,找到对应业务实现类;根据业务实现类中的属性信息(协议号和业务类型)自动定位到具体业务实现类对象,完成FIX报文协议号和业务类型的适配。
调用执行模块:用于业务实施单元调用业务逻辑方法,完成业务逻辑处理。
在本实施例中,业务平台根据定位到的具体业务实现类对象,通过动态反射原理,活动类对象信息,调用对应业务逻辑处理方法,完成业务逻辑处理。业务实现类对象统一继承于一抽象基类,该基类用于定义统一业务处理步骤,如:业务属性完整性检测、业务处理、业务异常处理、业务处理结果反馈等。
业务实施单元完成业务逻辑处理后,业务平台与交易机构发送端自身保存的会话编号+1。
需要说明的是,在以上实施过程中,当有新的FIX报文协议号更新,或有新的业务类型增加时,本系统则同步更新业务实现类。
以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
Claims (10)
1.一种基于FIX协议实现业务的方法,其特征在于,所述方法包括:
接收FIX报文,所述FIX报文为字符串的形式,包含协议号、业务类型和业务数据信息;
解析获取FIX报文中的协议号和业务类型,抽象封装FIX报文;
通过自定义注解方式,根据FIX报文协议号和业务类型定位具体的业务实施单元,完成FIX报文协议号和业务类型的适配;
业务实施单元完成业务逻辑处理。
2.根据权利要求1所述的基于FIX协议实现业务的方法,其特征在于,所述自定义注解包括第一自定义注解和第二自定义注解;
所述第一自定义注解注解定义业务实现类,并通过Key=Value存储业务实现类对象信息,其中,Key用于存储协议号和业务类型拼接而成的字符串,Value用于存储业务实现类对象值对象信息;
所述第一自定义注解还注解定义name属性,其中name=业务类型;
所述第二自定义注解包含Filed和FieldType枚举类型两个属性,其中Filed值为FIX报文中的业务类型,FieldType涵盖所有FIX报文包含实体对应的业务数据。
3.根据权利要求1所述的基于FIX协议实现业务的方法,其特征在于,所述接收FIX报文前,还包括:
加载自定义注解的业务实现类,并将所有标记有该注解的类进行缓存。
4.根据权利要求1所述的基于FIX协议实现业务的方法,其特征在于,所述解析获取FIX报文中的协议号和业务类型,包括:
截取FIX报文Header信息,获取FIX报文的协议号和业务类型;
拆分字符串,完成Key=Value的分解。
5.根据权利要求1所述的基于FIX协议实现业务的方法,其特征在于,所述抽象封装FIX报文,包括:
基于自定义注解,通过Key=Value模式将FIX报文向业务实体Object进行转换。
6.根据权利要求1所述的基于FIX协议实现业务的方法,其特征在于,所述根据FIX报文协议号和业务类型定位具体的业务实施单元,包括:
根据自定义注解中协议号和业务类型属性定位到从缓存中获取的具体业务实现类对象。
7.根据权利要求1所述的基于FIX协议实现业务的方法,其特征在于,所述业务实施单元完成业务逻辑处理,包括:
根据定位的业务实现类对象,通过动态反射原理,调用对应业务逻辑方法,进行业务逻辑处理;
所述业务实现类对象统一继承于一抽象基类,该基类定义统一业务处理步骤。
8.根据权利要求1所述的基于FIX协议实现业务的方法,其特征在于,所述接收FIX报文包括:
通过QuickFIX的消息分流器对各发送端的套接字进行异步非阻塞式监听;
接收到FIX报文后,根据FIX报文消息来源以及报文中携带的会话ID查找对应机构的会话信息;
检查会话序号是否连续;
若连续,则进入下一步;若不连续,则返回错误报文,并要求发送端重新发送。
9.根据权利要求2所述的基于FIX协议实现业务的方法,其特征在于,所述方法还包括:
当有新的FIX报文协议号更新,或有新的业务类型增加时,则同步更新业务实现类。
10.一种基于FIX协议实现业务的系统,其特征在于,包括以下模块:
接收模块:用于接收FIX报文;
解析模块:用于解析获取FIX报文中的协议号和业务类型,抽象封装FIX报文;
定位模块:用于通过自定义注解方式,根据FIX报文协议号和业务类型定位具体的业务实施单元;
调用执行模块:用于业务实施单元调用业务逻辑方法,完成业务逻辑处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210840601.8A CN115103041B (zh) | 2022-07-18 | 2022-07-18 | 一种基于fix协议实现业务的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210840601.8A CN115103041B (zh) | 2022-07-18 | 2022-07-18 | 一种基于fix协议实现业务的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115103041A true CN115103041A (zh) | 2022-09-23 |
CN115103041B CN115103041B (zh) | 2024-07-12 |
Family
ID=83299085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210840601.8A Active CN115103041B (zh) | 2022-07-18 | 2022-07-18 | 一种基于fix协议实现业务的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115103041B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116760700A (zh) * | 2023-06-29 | 2023-09-15 | 上海中汇亿达金融信息技术有限公司 | 将多个银行交易平台接口标准化的方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080105737A1 (en) * | 2006-11-02 | 2008-05-08 | Ullink Inc. | User programmable fix transactions |
CN106302442A (zh) * | 2016-08-12 | 2017-01-04 | 广州慧睿思通信息科技有限公司 | 一种基于Java语言的网络通讯数据包解析方法 |
CN107135188A (zh) * | 2016-02-29 | 2017-09-05 | 阿里巴巴集团控股有限公司 | 金融信息交换fix协议的业务实现方法、装置及系统 |
CN108833446A (zh) * | 2018-08-01 | 2018-11-16 | 广发证券股份有限公司 | 一种基于Fix协议请求包的协议转换方法及装置 |
-
2022
- 2022-07-18 CN CN202210840601.8A patent/CN115103041B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080105737A1 (en) * | 2006-11-02 | 2008-05-08 | Ullink Inc. | User programmable fix transactions |
CN107135188A (zh) * | 2016-02-29 | 2017-09-05 | 阿里巴巴集团控股有限公司 | 金融信息交换fix协议的业务实现方法、装置及系统 |
CN106302442A (zh) * | 2016-08-12 | 2017-01-04 | 广州慧睿思通信息科技有限公司 | 一种基于Java语言的网络通讯数据包解析方法 |
CN108833446A (zh) * | 2018-08-01 | 2018-11-16 | 广发证券股份有限公司 | 一种基于Fix协议请求包的协议转换方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116760700A (zh) * | 2023-06-29 | 2023-09-15 | 上海中汇亿达金融信息技术有限公司 | 将多个银行交易平台接口标准化的方法及系统 |
CN116760700B (zh) * | 2023-06-29 | 2024-01-16 | 上海中汇亿达金融信息技术有限公司 | 将多个银行交易平台接口标准化的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115103041B (zh) | 2024-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10896195B2 (en) | Automatic generation of smart contracts | |
US10896149B2 (en) | Composition operators for smart contract | |
Brodie | The promise of distributed computing and the challenges of legacy information systems | |
US7565443B2 (en) | Common persistence layer | |
US6910216B2 (en) | IMS transaction messages metamodel | |
US6591277B2 (en) | Dynamic object persistence | |
US6915523B2 (en) | PL/I metamodel | |
US6775680B2 (en) | High level assembler metamodel | |
AU780753B2 (en) | Client-server computing software architecture | |
US6453356B1 (en) | Data exchange system and method | |
KR100679809B1 (ko) | 분산객체간 통신장치 및 방법 | |
US8626803B2 (en) | Method and apparatus for automatically providing network services | |
US6904598B2 (en) | COBOL metamodel | |
US5995946A (en) | System and method for establishing and managing links among customer accounts maintained within a telecommunications system | |
US20050243604A1 (en) | Migrating integration processes among data integration platforms | |
US20050256892A1 (en) | Regenerating data integration functions for transfer from a data integration platform | |
US20050005261A1 (en) | Component integration engine | |
US20050251533A1 (en) | Migrating data integration processes through use of externalized metadata representations | |
JP2008507755A (ja) | インデックスベースのパラメータアクセス及びこれを使用するためのソフトウェア | |
JP2004506264A (ja) | C/c++メタモデルを含む共通アプリケーション・メタモデル | |
Myerson | The complete book of middleware | |
US20050166183A1 (en) | Structured message process calculus | |
EP1815349A2 (en) | Methods and systems for semantic identification in data systems | |
GB2366421A (en) | Ordering relational database operations according to referential integrity constraints | |
CN115103041B (zh) | 一种基于fix协议实现业务的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |