CN112445868A - 业务报文处理方法和装置 - Google Patents
业务报文处理方法和装置 Download PDFInfo
- Publication number
- CN112445868A CN112445868A CN201910816045.9A CN201910816045A CN112445868A CN 112445868 A CN112445868 A CN 112445868A CN 201910816045 A CN201910816045 A CN 201910816045A CN 112445868 A CN112445868 A CN 112445868A
- Authority
- CN
- China
- Prior art keywords
- service
- service type
- message
- type
- module
- 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
- 238000003672 processing method Methods 0.000 title abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 72
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000004458 analytical method Methods 0.000 claims description 61
- 230000002688 persistence Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 9
- 230000004913 activation Effects 0.000 claims description 4
- 238000000926 separation method Methods 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000004260 weight control Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种业务报文处理方法和装置,涉及计算机技术领域。其中,该方法包括:接收上游***下传的业务报文;对所述业务报文进行解析,以确定所述业务报文的第一业务类型;根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道;将所述业务报文发送至与所述第一业务类型对应的消息队列通道。通过以上步骤能够在接单后将不同业务类型的业务报文拆分到不同的消息队列通道,减轻对下游***的压力,提高下游***运行的稳定,便于后续业务处理逻辑的分离、解耦。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种业务报文处理方法和装置。
背景技术
随着互联网的快速发展,网上购物由于具有快捷、方便等优点,已经成为一种消费时尚。随着网购物品的多样化演变,人们的购买力度逐年增大,各类商家、用户的业务需求也向多元化转变,带给业务***的压力也随之增大。
在现有技术中,在上游***下传业务报文后,业务处理***主要采用统一管道方式进行接单。例如,可先采用RPC服务框架接口接收业务报文,再将所有业务报文统一发送至MQ(消息队列)中,再由业务处理***对所有业务报文进行统一处理。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:第一、随着业务的快速迭代发展,并伴随层出不穷的商家定制化业务,业务处理***需要接收和处理的报文量也逐渐增大,现有统一管道接单方式对下游***造成的压力越来越大,并可能对下游***的运行稳定性造成影响。第二、由于通过统一管道接收业务报文,致使后续业务处理***中各类业务处理逻辑耦合在一起,使后续业务迭代越来越困难。第三、由于MQ中业务报文的存储时间有限,以及发送方发送业务报文与MQ接收报文为异步操作等原因,可能导致MQ中的业务报文丢失、后续无法对业务报文进行重新消费等问题。
发明内容
有鉴于此,本发明提供了一种业务报文处理方法和装置,能够在接单后将不同业务类型的业务报文拆分到不同的消息队列通道,减轻对下游***的压力,提高下游***运行的稳定,便于后续业务处理逻辑的分离、解耦。
为实现上述目的,根据本发明的一个方面,提供了一种业务报文处理方法。
本发明的业务报文处理方法包括:接收上游***下传的业务报文;对所述业务报文进行解析,以确定所述业务报文的第一业务类型;根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道;将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
可选地,所述方法还包括:在执行所述接收上游***下传的业务报文的步骤之后,根据所述业务报文携带的第二业务类型标识调用工厂类,以创建与第二业务类型对应的业务报文拆分处理实例;其中,所述第一业务类型为所述第二业务类型下的子业务类型。
可选地,所述对所述业务报文进行解析,以确定所述业务报文的第一业务类型的步骤包括:加载配置文件;其中,所述配置文件包括多条业务类型解析规则,每条业务类型解析规则为以第一业务类型标识为键、以启用状态标识为值的键值对;在所述业务类型解析规则处于启用状态的情况下,判断所述业务报文是否包含所述业务类型解析规则中的第一业务类型标识;若是,确定所述业务报文的第一业务类型为所述第一业务类型标识所定义的业务类型;若否,遍历下一条业务类型解析规则,直至确定出所述业务报文的第一业务类型。
可选地,所述方法还包括:在执行所述接收上游***下传的业务报文的步骤之后,将所述业务报文进行持久化处理。
为实现上述目的,根据本发明的另一方面,提供了一种业务报文处理装置。
本发明的业务报文处理装置包括:接收模块,用于接收上游***下传的业务报文;解析模块,用于对所述业务报文进行解析,以确定所述业务报文的第一业务类型;确定模块,用于根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道;发送模块,用于将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
可选地,所述装置还包括:创建模块,用于根据所述业务报文携带的第二业务类型标识调用工厂类,以创建与第二业务类型对应的业务报文拆分处理实例;其中,所述第一业务类型为所述第二业务类型下的子业务类型;所述拆分处理实例包括所述解析模块、所述确定模块和所述发送模块。
可选地,所述解析模块对所述业务报文进行解析,以确定所述业务报文的第一业务类型包括:所述解析模块加载配置文件;其中,所述配置文件包括多条业务类型解析规则,每条业务类型解析规则为以第一业务类型标识为键、以启用状态标识为值的键值对;所述解析模块在所述业务类型解析规则处于启用状态的情况下,判断所述业务报文是否包含所述业务类型解析规则中的第一业务类型标识;若是,所述解析模块确定所述业务报文的第一业务类型为所述第一业务类型标识所定义的业务类型;若否,所述解析模块遍历下一条业务类型解析规则,直至确定出所述业务报文的第一业务类型。
可选地,所述装置还包括:保存模块,用于在所述接收模块接收到上游***下传的业务报文之后,将所述业务报文进行持久化处理。
为实现上述目的,根据本发明的再一个方面,提供了一种电子设备。
本发明的电子设备,包括:一个或多个处理器;以及,存储装置,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明的业务报文处理方法。
为实现上述目的,根据本发明的又一个方面,提供了一种计算机可读介质。
本发明的计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明的业务报文处理方法。
上述发明中的一个实施例具有如下优点或有益效果:通过在接收到上游***下传的业务报文后,对所述业务报文进行解析,以确定所述业务报文的第一业务类型;根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道;将所述业务报文发送至与所述第一业务类型对应的消息队列通道这些步骤,能够将不同业务类型的业务报文拆分至不同的消息队列通道,减轻对下游***的压力,提高下游***运行的稳定,便于后续业务处理逻辑的分离、解耦。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明一个实施例的业务报文处理方法的主要流程的示意图;
图2是根据本发明另一个实施例的业务报文处理方法的主要流程的示意图;
图3是根据本发明一个实施例的业务报文处理装置的主要模块的示意图;
图4是根据本发明另一个实施例的业务报文处理装置的主要模块的示意图;
图5是本发明实施例可以应用于其中的示例性***架构图之一;
图6是本发明实施例可以应用于其中的示例性***架构图之二;
图7是适于用来实现本发明实施例的电子设备的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要指出的是,在不冲突的情况下,本发明中的实施例以及实施例中的特征可以相互组合。
图1是根据本发明一个实施例的业务报文处理方法的主要流程的示意图。如图1所示,本发明实施例的业务报文处理方法包括:
步骤S101、接收上游***下传的业务报文。
在该步骤中,可基于RPC(远程过程调用协议)接口接收上游***下传的业务报文。示例性地,当上游***为下单***时,其下传的业务报文的第二业务类型可以为订单、拒收入库单、退供单等。
步骤S102、对所述业务报文进行解析,以确定所述业务报文的第一业务类型。
在该步骤中,可通过对所述业务报文进行解析,以得到所述业务报文携带的第一业务类型标识。其中,第一业务类型是第二业务类型的子业务类型。例如,对于订单这一第二业务类型来说,其所涵盖的子业务类型(即第一业务类型)可以为仓配一体订单、仓配一体转外订单、产地仓订单、大小件同仓订单等。
步骤S103、根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道。
在一可选示例中,所述业务与通道的对应关系采用Map(Map是一种存储键值对的集合)数据结构。其中,该Map数据结构可包括多个以第一业务类型标识为Key(键)、以对应的消息队列通道标识为Value(值)的键值对。在另一可选示例中,所述业务与通道的对应关系采用数据库表等数据结构。
步骤S104、将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
在本发明实施例中,通过在接收到上游***下传的业务报文后,对所述业务报文进行解析,以确定所述业务报文的第一业务类型;根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道;将所述业务报文发送至与所述第一业务类型对应的消息队列通道这些步骤,能够将不同业务类型的业务报文拆分至不同的消息队列通道,减轻对下游***的压力,提高下游***运行的稳定,便于后续业务处理逻辑的分离、解耦。
图2是根据本发明另一个实施例的业务报文处理方法的主要流程的示意图。如图2所示,本发明实施例的业务报文处理方法包括:
步骤S201、基于RPC接口接收上游***的业务报文。
例如,可通过JSF接口(一种RPC接口,JSF接口是发布在Jingdong ServiceFramework这个服务框架上提供给其他***使用的服务接口)。示例性地,当上游***为下单***时,其下传的业务报文的第二业务类型可以为订单、拒收入库单、退供单等。
步骤S202、将所述业务报文进行持久化处理。
在该步骤中,所述持久化处理可以为将接收到的业务报文存储至数据库表中。通过对业务报文进行持久化处理,能够在出现异常时从数据库表中获取业务报文,从而解决了后续无法对业务报文进行重新消费等问题。另外,本发明实施例的方法还可包括:基于保存的业务报文构建可视化页面,以在出现异常时通过该可视化页面快速定位相应的业务报文。
步骤S203、根据所述业务报文携带的第二业务类型标识调用工厂类,以创建与第二业务类型对应的业务报文拆分处理实例。
其中,第二业务类型与业务报文拆分处理实例之间可以为一对一的对应关系,也可以为多对一的对应关系。例如,假设第二业务类型存在订单、拒收入库单、退供单等类型时,则可将订单这一类型与业务报文拆分处理实例1相对应,将拒收入库单、退供单等其他类型与业务报文拆分处理实例2对应。进而,在该步骤中,若所述业务报文携带的第二业务类型标识为订单标识,则调用工厂类创建业务报文拆分处理实例1;若所述业务报文携带的第二业务类型标识为拒收入库单、退供单等其他类型标识,则调用工厂类创建业务报文拆分处理实例2。
在本发明实施例中,通过采用工厂模式创建与第二业务类型对应的业务报文拆分处理实例,并通过对应的业务报文拆分处理实例执行步骤S204、步骤S205等后续步骤,能够实现业务拆分处理逻辑的进一步解耦。
步骤S204、加载配置文件,根据所述配置文件中的业务类型解析规则对所述业务报文进行解析,以确定所述业务报文的第一业务类型。
其中,第一业务类型是第二业务类型的子业务类型。例如,对于订单这一第二业务类型来说,其所涵盖的子业务类型(即第一业务类型)可以为仓配一体订单、仓配一体转外订单、产地仓订单、大小件同仓订单等。
具体实施时,可通过Spring框架(Spring框架是一个轻量级控制反转和面向切面的容器框架)的依赖注入功能加载配置文件。
在一个可选示例中,所述配置文件可以为XML配置文件,且该XML配置文件包括两个Map数据结构,分别为业务类型解析规则集合、业务与通道对应关系集合。其中,业务类型解析规则集合可包括多条业务类型解析规则,每条业务类型解析规则为以第一业务类型标识为键、以启用状态标识为值的键值对。进一步,所述启用状态标识可包括两种可能的取值:第一种取值(比如为true)表示该业务类型解析规则处于启用状态,第二种取值(比如为false)表示该业务类型解析规则处于非启用状态。
在该可选示例中,根据业务类型解析规则对所述业务报文进行解析,以确定所述业务报文的第一业务类型包括:步骤A、遍历一条业务类型解析规则,并判断该业务类型解析规则是否处于启用状态;步骤B、在该业务类型解析规则处于启用状态的情况下,判断业务报文是否包含该业务类型解析规则中的第一业务类型标识;步骤C、在业务报文包含该业务类型解析规则中的第一业务类型标识的情况下,确定业务报文的第一业务类型为所述第一业务类型标识所定义的业务类型;步骤D、在业务报文不包含该业务类型解析规则中的第一业务类型标识,或者该业务类型解析规则处于非启用状态的情况下,遍历下一条业务类型解析规则,直至确定出所述业务报文的第一业务类型。
在一具体示例中,业务类型解析规则集合包括以下业务类型解析规则:<entrykey=”1_1”value=”2”/>、<entry key=”1_2”value=”1”/>、<entry key=”2_1+5_1”value=”2”/>。其中,entry key=”1_1”为第一业务类型标识,第一业务类型标识的值为“1_1”表示目标字符串中的第一位为1的情况,value=”2”为启用状态标识,value值为“2”表示该业务类型解析规则处于启用状态;entry key=”1_2”为第一业务类型标识,第一业务类型标识的值为“1_2”表示目标字符串中的第一位为2的情况,value=”1”为启用状态标识,value值为“1”表示该业务类型解析规则处于非启用状态;entry key=”2_1+5_1”为第一业务类型标识,第一业务类型标识的值为“2_1+5_1”表示目标字符串中的第2位为1、且第5位为1的情况,value=”2”为启用状态标识,value值为“2”表示该业务类型解析规则处于启用状态。在加载配置文件之后,首先遍历第一条业务类型解析规则、并判断第一条业务类型解析规则中的value值。由于第一条业务类型解析规则中的value值为2(表示该条解析规则处于启用状态),因此接下来会判断业务报文中的目标字符串(比如sendpay字段)的第1位是否为1,若业务报文中的目标字符串的第1位为1,则确定业务报文的第一业务类型为第一业务类型标识entry key=”1_1”所定义的业务类型,若业务报文中的目标字符串的第1位不为1,则接下来遍历第二条业务类型解析规则,直至确定出所述业务报文的第一业务类型。
步骤S205、根据所述业务报文的第一业务类型查询业务与通道对应关系,以确定与所述第一业务类型对应的消息队列通道。
在一示例中,配置文件中业务与通道对应关系集合包括以下业务与通道对应关系:<entry key=”1_1”value=”service1_topic”/>、<entry key=”1_2”value=”service2_topic”/>、<entry key=”2_1+5_1”value=service3_topic/>。进而,在该步骤中,若通过步骤S204确定的业务报文的第一业务类型为entry key=”1_1”所定义的业务类型,则对应的消息队列通道为“service1_topic”;若通过步骤S204确定的业务报文的第一业务类型为entry key=”2_1+5_1”所定义的业务类型,则对应的消息队列通道为“service3_topic”。
步骤S206、将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
进一步,在将不同业务类型的业务报文发送至不同的消息队列通道后,可针对拆分后的业务报文分别独立部署业务处理服务器,以实现各个业务在进行后续处理时的物理隔离,保证下游***运行的稳定性。另外,在步骤S206之后,还可将拆分后的各个业务报文的相关数据(比如各个消息队列通道中的业务报文数据)写入任务表,以便于对各个消息队列通道进行限流等后续操作。
在本发明实施例中,通过在接收到业务报文后对业务报文进行持久化处理,能够在出现异常时从数据库表中获取业务报文,从而解决了数据丢失、以及后续无法对业务报文进行重新消费等问题;通过对业务报文进行解析以确定业务报文的第一业务类型,根据业务报文的第一业务类型查询业务与通道的对应关系以确定与所述第一业务类型对应的消息队列通道,将所述业务报文发送至与所述第一业务类型对应的消息队列通道这些步骤,能够将不同业务类型的业务报文拆分至不同的消息队列通道,减轻对下游***的压力,提高下游***运行的稳定,便于后续业务处理逻辑的分离、解耦。
图3是根据本发明一个实施例的业务报文处理装置的主要模块的示意图。如图3所示,本发明实施例的业务报文处理装置300包括:接收模块301、解析模块302、确定模块303、发送模块304。
接收模块301,用于接收上游***下传的业务报文。
具体来说,接收模块301可基于RPC(远程过程调用协议)接口接收上游***下传的业务报文。示例性地,当上游***为下单***时,其下传的业务报文的第二业务类型可以为订单、拒收入库单、退供单等。
解析模块302,用于对所述业务报文进行解析,以确定所述业务报文的第一业务类型。
具体来说,解析模块302可通过解析所述业务报文,以得到所述业务报文携带的第一业务类型标识。其中,第一业务类型是第二业务类型的子业务类型。例如,对于订单这一第二业务类型来说,其所涵盖的子业务类型(即第一业务类型)可以为仓配一体订单、仓配一体转外订单、产地仓订单、大小件同仓订单等。
确定模块303,用于根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道。
在一可选示例中,所述业务与通道的对应关系采用Map数据结构。其中,Map数据结构可包括多个以第一业务类型标识为Key(键)、以对应的消息队列通道标识为Value(值)的键值对。在该可选示例中,确定模块303可根据解析模块302解析出的第一业务类型标识查询该Map数据结构,以得到与第一业务类型标识对应的消息队列通道标识。
在另一可选示例中,所述业务与通道的对应关系还可采用数据库表等数据结构。
发送模块304,用于将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
在本发明实施例中,通过接收模块接收上游***下传的业务报文,通过解析模块对所述业务报文进行解析,以确定所述业务报文的第一业务类型,通过确定模块根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道,以及通过发送模块将所述业务报文发送至与所述第一业务类型对应的消息队列通道,能够将不同业务类型的业务报文拆分至不同的消息队列通道,减轻对下游***的压力,提高下游***运行的稳定,便于后续业务处理逻辑的分离、解耦。
图4是根据本发明另一个实施例的业务报文处理装置的主要模块的示意图。如图4所示,本发明实施例的业务报文处理装置400包括:接收模块401、保存模块402、创建模块403、解析模块404、确定模块405、发送模块406。
接收模块401,用于基于RPC接口接收上游***的业务报文。例如,接收模块401可通过JSF接口(一种RPC接口,JSF接口是发布在Jingdong Service Framework这个服务框架上提供给其他***使用的服务接口)。示例性地,当上游***为下单***时,其下传的业务报文的第二业务类型可以为订单、拒收入库单、退供单等。
保存模块402,用于在接收模块401接收到上游***的业务报文后,将所述业务报文进行持久化处理。示例性地,保存模块402执行的所述持久化处理可以为:将接收到的业务报文存储至数据库表中。通过保存模块402对业务报文进行持久化处理,能够在出现异常时从数据库表中获取业务报文,从而解决了后续无法对业务报文进行重新消费等问题。
创建模块403,用于根据所述业务报文携带的第二业务类型标识调用工厂类,以创建与第二业务类型对应的业务报文拆分处理实例。其中,所述第一业务类型为所述第二业务类型下的子业务类型;所述拆分处理实例包括解析模块404、确定模块405和发送模块406。
其中,第二业务类型与业务报文拆分处理实例之间可以为一对一的对应关系,也可以为多对一的对应关系。例如,假设第二业务类型存在订单、拒收入库单、退供单等类型时,则可将订单这一类型与业务报文拆分处理实例1相对应,将拒收入库单、退供单等其他类型与业务报文拆分处理实例2对应。进而,若所述业务报文携带的第二业务类型标识为订单标识,则创建模块403调用工厂类创建业务报文拆分处理实例1;若所述业务报文携带的第二业务类型标识为拒收入库单、退供单等其他类型标识,则创建模块403调用工厂类创建业务报文拆分处理实例2。
在本发明实施例中,通过创建模块403采用工厂模式创建与第二业务类型对应的业务报文拆分处理实例,并通过对应的业务报文拆分处理实例进行后续拆分处理,能够实现业务拆分处理逻辑的进一步解耦。
解析模块404,用于加载配置文件,根据所述配置文件中的业务类型解析规则对所述业务报文进行解析,以确定所述业务报文的第一业务类型。
具体实施时,解析模块404可通过Spring框架(Spring框架是一个轻量级控制反转和面向切面的容器框架)的依赖注入功能加载配置文件。
在一个可选示例中,所述配置文件可以为XML配置文件,且该XML配置文件包括两个Map数据结构,分别为业务类型解析规则集合、业务与通道对应关系集合。其中,业务类型解析规则集合可包括多条业务类型解析规则,每条业务类型解析规则为以第一业务类型标识为键、以启用状态标识为值的键值对。进一步,所述启用状态标识可包括两种可能的取值:第一种取值(比如为true)表示该业务类型解析规则处于启用状态,第二种取值(比如为false)表示该业务类型解析规则处于非启用状态。
在该可选示例中,解析模块404根据业务类型解析规则对所述业务报文进行解析,以确定所述业务报文的第一业务类型包括:步骤A、解析模块404遍历一条业务类型解析规则,并判断该业务类型解析规则是否处于启用状态;步骤B、在该业务类型解析规则处于启用状态的情况下,解析模块404判断业务报文是否包含该业务类型解析规则中的第一业务类型标识;步骤C、在业务报文包含该业务类型解析规则中的第一业务类型标识的情况下,解析模块404确定业务报文的第一业务类型为所述第一业务类型标识所定义的业务类型;步骤D、在业务报文不包含该业务类型解析规则中的第一业务类型标识,或者该业务类型解析规则处于非启用状态的情况下,解析模块404遍历下一条业务类型解析规则,直至确定出所述业务报文的第一业务类型。
确定模块405,用于根据所述业务报文的第一业务类型查询业务与通道对应关系,以确定与所述第一业务类型对应的消息队列通道。
在一示例中,配置文件中业务与通道对应关系集合包括以下业务与通道对应关系:<entry key=”1_1”value=”service1_topic”/>、<entry key=”1_2”value=”service2_topic”/>、<entry key=”2_1+5_1”value=service3_topic/>。进而,在该步骤中,若解析模块404确定的业务报文的第一业务类型为entry key=”1_1”所定义的业务类型,则确定模块405确定的对应的消息队列通道为“service1_topic”;若解析模块404确定的业务报文的第一业务类型为entry key=”2_1+5_1”所定义的业务类型,则确定模块405确定的对应的消息队列通道为“service3_topic”。
发送模块406,用于将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
在本发明实施例中,通过保存模块对接收到的业务报文进行持久化处理,能够在出现异常时从数据库表中获取业务报文,从而解决了数据丢失、以及后续无法对业务报文进行重新消费等问题;通过解析模块对业务报文进行解析以确定业务报文的第一业务类型,通过解析模块根据业务报文的第一业务类型查询业务与通道的对应关系以确定与所述第一业务类型对应的消息队列通道,通过发送模块将所述业务报文发送至与所述第一业务类型对应的消息队列通道,能够将不同业务类型的业务报文拆分至不同的消息队列通道,减轻对下游***的压力,提高下游***运行的稳定,便于后续业务处理逻辑的分离、解耦。
图5是本发明实施例可以应用于其中的示例性***架构图之一。如图5所示,该示例性***架构包括:上游***501、业务报文处理装置502、消息队列通道1 503、消息队列通道2 504、消息队列通道N 505。
上游***501,用于下传业务报文。示例性地,上游***可以为下单***,其下传的业务报文的第二业务类型可以为订单、拒收入库单、退供单等。
业务报文处理装置502,用于接收上游***下传的业务报文,然后对所述业务报文进行解析以确定所述业务报文的第一业务类型。其中,第一业务类型是第二业务类型的子业务类型。例如,对于订单这一第二业务类型来说,其所涵盖的子业务类型(即第一业务类型)可以为仓配一体订单、仓配一体转外订单、产地仓订单、大小件同仓订单等。
业务报文处理装置502,还用于根据所述业务报文的第一业务类型查询业务与通道的对应关系以确定与所述第一业务类型对应的消息队列通道,还用于将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
消息队列通道1 503、消息队列通道2 504、以及消息队列通道N 505,用于分别存储业务报文处理装置502发送的业务报文。
在本发明实施例中,通过以上***架构能够在接单后将不同业务类型的业务报文拆分到不同的消息队列通道,减轻对下游***的压力,提高下游***运行的稳定,便于后续业务处理逻辑的分离、解耦。
图6示出了可以应用本发明实施例的业务报文处理方法或业务报文处理装置的示例性***架构600。
如图6所示,***架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如下单***应用、仓储管理平台应用等。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的下单***应用提供支持的后台管理服务器。后台管理服务器可以对接收到的业务报文等数据进行拆分等处理,并将拆分后的业务报文发送至相应的消息队列通道。
需要说明的是,本发明实施例所提供的业务报文处理方法一般由服务器605执行,相应地,业务报文处理装置一般设置于服务器605中。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图7,其示出了适于用来实现本发明实施例的电子设备的计算机***700的结构示意图。图7示出的计算机***仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、解析模块、确定模块和发送模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块还可以被描述为“接收上游***下传的业务报文的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备执行以下流程:接收上游***下传的业务报文;对所述业务报文进行解析,以确定所述业务报文的第一业务类型;根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道;将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种业务报文处理方法,其特征在于,所述方法包括:
接收上游***下传的业务报文;
对所述业务报文进行解析,以确定所述业务报文的第一业务类型;
根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道;
将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在执行所述接收上游***下传的业务报文的步骤之后,根据所述业务报文携带的第二业务类型标识调用工厂类,以创建与第二业务类型对应的业务报文拆分处理实例;其中,所述第一业务类型为所述第二业务类型下的子业务类型。
3.根据权利要求1所述的方法,其特征在于,所述对所述业务报文进行解析,以确定所述业务报文的第一业务类型的步骤包括:
加载配置文件;其中,所述配置文件包括多条业务类型解析规则,每条业务类型解析规则为以第一业务类型标识为键、以启用状态标识为值的键值对;在所述业务类型解析规则处于启用状态的情况下,判断所述业务报文是否包含所述业务类型解析规则中的第一业务类型标识;若是,确定所述业务报文的第一业务类型为所述第一业务类型标识所定义的业务类型;若否,遍历下一条业务类型解析规则,直至确定出所述业务报文的第一业务类型。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在执行所述接收上游***下传的业务报文的步骤之后,将所述业务报文进行持久化处理。
5.一种业务报文处理装置,其特征在于,所述装置包括:
接收模块,用于接收上游***下传的业务报文;
解析模块,用于对所述业务报文进行解析,以确定所述业务报文的第一业务类型;
确定模块,用于根据所述业务报文的第一业务类型查询业务与通道的对应关系,以确定与所述第一业务类型对应的消息队列通道;
发送模块,用于将所述业务报文发送至与所述第一业务类型对应的消息队列通道。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
创建模块,用于根据所述业务报文携带的第二业务类型标识调用工厂类,以创建与第二业务类型对应的业务报文拆分处理实例;其中,所述第一业务类型为所述第二业务类型下的子业务类型;所述拆分处理实例包括所述解析模块、所述确定模块和所述发送模块。
7.根据权利要求5所述的装置,其特征在于,所述解析模块对所述业务报文进行解析,以确定所述业务报文的第一业务类型包括:
所述解析模块加载配置文件;其中,所述配置文件包括多条业务类型解析规则,每条业务类型解析规则为以第一业务类型标识为键、以启用状态标识为值的键值对;所述解析模块在所述业务类型解析规则处于启用状态的情况下,判断所述业务报文是否包含所述业务类型解析规则中的第一业务类型标识;若是,所述解析模块确定所述业务报文的第一业务类型为所述第一业务类型标识所定义的业务类型;若否,所述解析模块遍历下一条业务类型解析规则,直至确定出所述业务报文的第一业务类型。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
保存模块,用于在所述接收模块接收到上游***下传的业务报文之后,将所述业务报文进行持久化处理。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至4中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至4中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910816045.9A CN112445868B (zh) | 2019-08-30 | 2019-08-30 | 业务报文处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910816045.9A CN112445868B (zh) | 2019-08-30 | 2019-08-30 | 业务报文处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112445868A true CN112445868A (zh) | 2021-03-05 |
CN112445868B CN112445868B (zh) | 2024-04-12 |
Family
ID=74734104
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910816045.9A Active CN112445868B (zh) | 2019-08-30 | 2019-08-30 | 业务报文处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112445868B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113114776A (zh) * | 2021-04-20 | 2021-07-13 | 北京京东振世信息技术有限公司 | 一种数据推送方法和装置 |
CN113612773A (zh) * | 2021-08-03 | 2021-11-05 | 厦门至恒融兴信息技术股份有限公司 | 人工智能实现的智能报文识别和解析***与方法 |
CN114928663A (zh) * | 2022-06-02 | 2022-08-19 | 蜂助手股份有限公司 | 一种识别回调报文的方法及装置 |
CN115208947A (zh) * | 2022-09-16 | 2022-10-18 | 北京中科江南信息技术股份有限公司 | 一种业务信息推送方法、***及存储介质 |
CN116934271A (zh) * | 2023-08-08 | 2023-10-24 | 上海中汇亿达金融信息技术有限公司 | 业务处理方法、装置、电子设备及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7334015B1 (en) * | 2000-10-27 | 2008-02-19 | Vestacare, Inc. | Integration of legacy mainframe systems through data stream objectification into finite state machines |
CN101471854A (zh) * | 2007-12-29 | 2009-07-01 | 华为技术有限公司 | 一种转发报文的方法及装置 |
CN101655795A (zh) * | 2009-09-25 | 2010-02-24 | 金蝶软件(中国)有限公司 | 服务实例的创建方法和企业资源计划*** |
CN105306277A (zh) * | 2015-11-19 | 2016-02-03 | 中国建设银行股份有限公司 | 消息队列的消息调度方法及消息调度装置 |
CN105681346A (zh) * | 2016-03-15 | 2016-06-15 | 福建星海通信科技有限公司 | 一种基于工厂类实现报文解析的方法 |
CN106385378A (zh) * | 2016-08-31 | 2017-02-08 | 北京神州绿盟信息安全科技股份有限公司 | 一种带内管理控制下控制报文的处理方法及装置 |
CN106899452A (zh) * | 2017-02-23 | 2017-06-27 | 江苏徐工信息技术股份有限公司 | 一种基于xm2m协议的消息循环处理的物联网终端调试方法 |
CN108009028A (zh) * | 2017-11-29 | 2018-05-08 | 中国平安人寿保险股份有限公司 | 消息处理方法、装置、设备及计算机可读存储介质 |
CN109639653A (zh) * | 2018-11-29 | 2019-04-16 | 中国人民银行清算总中心 | 基于分布式网银***的报文传输方法及*** |
CN109889375A (zh) * | 2019-01-23 | 2019-06-14 | 中国银行股份有限公司 | 业务报文校验方法、装置及计算机存储介质 |
-
2019
- 2019-08-30 CN CN201910816045.9A patent/CN112445868B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7334015B1 (en) * | 2000-10-27 | 2008-02-19 | Vestacare, Inc. | Integration of legacy mainframe systems through data stream objectification into finite state machines |
CN101471854A (zh) * | 2007-12-29 | 2009-07-01 | 华为技术有限公司 | 一种转发报文的方法及装置 |
CN101655795A (zh) * | 2009-09-25 | 2010-02-24 | 金蝶软件(中国)有限公司 | 服务实例的创建方法和企业资源计划*** |
CN105306277A (zh) * | 2015-11-19 | 2016-02-03 | 中国建设银行股份有限公司 | 消息队列的消息调度方法及消息调度装置 |
CN105681346A (zh) * | 2016-03-15 | 2016-06-15 | 福建星海通信科技有限公司 | 一种基于工厂类实现报文解析的方法 |
CN106385378A (zh) * | 2016-08-31 | 2017-02-08 | 北京神州绿盟信息安全科技股份有限公司 | 一种带内管理控制下控制报文的处理方法及装置 |
CN106899452A (zh) * | 2017-02-23 | 2017-06-27 | 江苏徐工信息技术股份有限公司 | 一种基于xm2m协议的消息循环处理的物联网终端调试方法 |
CN108009028A (zh) * | 2017-11-29 | 2018-05-08 | 中国平安人寿保险股份有限公司 | 消息处理方法、装置、设备及计算机可读存储介质 |
CN109639653A (zh) * | 2018-11-29 | 2019-04-16 | 中国人民银行清算总中心 | 基于分布式网银***的报文传输方法及*** |
CN109889375A (zh) * | 2019-01-23 | 2019-06-14 | 中国银行股份有限公司 | 业务报文校验方法、装置及计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
邓子云;黄婧;谢艳梅;杨晓峰;: "一种XML报文自动处理引擎的关键技术", 西南科技大学学报, no. 02, 15 June 2010 (2010-06-15) * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113114776A (zh) * | 2021-04-20 | 2021-07-13 | 北京京东振世信息技术有限公司 | 一种数据推送方法和装置 |
CN113612773A (zh) * | 2021-08-03 | 2021-11-05 | 厦门至恒融兴信息技术股份有限公司 | 人工智能实现的智能报文识别和解析***与方法 |
CN114928663A (zh) * | 2022-06-02 | 2022-08-19 | 蜂助手股份有限公司 | 一种识别回调报文的方法及装置 |
CN115208947A (zh) * | 2022-09-16 | 2022-10-18 | 北京中科江南信息技术股份有限公司 | 一种业务信息推送方法、***及存储介质 |
CN116934271A (zh) * | 2023-08-08 | 2023-10-24 | 上海中汇亿达金融信息技术有限公司 | 业务处理方法、装置、电子设备及介质 |
CN116934271B (zh) * | 2023-08-08 | 2024-02-02 | 上海中汇亿达金融信息技术有限公司 | 业务处理方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112445868B (zh) | 2024-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112445868B (zh) | 业务报文处理方法和装置 | |
CN112148711B (zh) | 一种批处理任务的处理方法和装置 | |
CN112860451A (zh) | 一种基于SaaS的多租户数据处理方法和装置 | |
CN111917687A (zh) | 一种循环推送提醒消息的方法和装置 | |
CN111427701A (zh) | 一种工作流引擎***和业务处理方法 | |
CN111478781B (zh) | 一种消息广播的方法和装置 | |
CN112084042B (zh) | 一种消息处理的方法和装置 | |
CN114979295A (zh) | 一种网关管理的方法和装置 | |
CN109981546B (zh) | 获取应用模块间的远程调用关系的方法和装置 | |
CN112948138A (zh) | 一种处理消息的方法和装置 | |
CN114979256B (zh) | 一种消息推送方法、装置、电子设备及计算机可读介质 | |
CN110764769A (zh) | 处理用户请求的方法和装置 | |
CN110909269B (zh) | 一种日志上报的方法和装置 | |
CN113556370A (zh) | 一种服务调用方法和装置 | |
CN113779018A (zh) | 一种数据处理方法和装置 | |
CN112099841A (zh) | 一种生成配置文件的方法和*** | |
CN113448652A (zh) | 一种请求处理方法和装置 | |
CN112559001A (zh) | 更新应用的方法和装置 | |
CN113495747B (zh) | 一种灰度发布方法和装置 | |
CN115309612B (zh) | 一种监控数据的方法和装置 | |
CN113760886B (zh) | 提供数据服务的方法、装置、设备和计算机可读介质 | |
CN116112880B (zh) | 基于mq的高并发短信发送方法和装置 | |
CN114301778B (zh) | 一种控制访问的方法和装置 | |
CN117891621A (zh) | 处理业务消息的方法、装置、设备和计算机可读介质 | |
CN117749755A (zh) | 一种预发布环境下的消息转发方法和装置 |
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 |