CN112291254B - 一种用于可靠交易的消息处理方法及装置 - Google Patents
一种用于可靠交易的消息处理方法及装置 Download PDFInfo
- Publication number
- CN112291254B CN112291254B CN202011220870.1A CN202011220870A CN112291254B CN 112291254 B CN112291254 B CN 112291254B CN 202011220870 A CN202011220870 A CN 202011220870A CN 112291254 B CN112291254 B CN 112291254B
- Authority
- CN
- China
- Prior art keywords
- message
- queue
- middleware
- readable
- routing
- 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.)
- Active
Links
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
-
- 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/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种用于可靠交易的消息处理方法及装置,方法包括:解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件;通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。本申请以多进程的方式进行线程派生,用多线程高效地处理报文收发,同时运营线程池统一管理派生出的线程,提高了报文分发效率。另外,利用树结构的方式解析消息类型,并在配置文件中以过滤规则、适配规则两种规则完成消息转发后的分类放置,使得消息能够被合理分类,达到了统一管理处理后消息的目的。
Description
技术领域
本申请属于消息系统处理技术领域,具体地讲,涉及一种用于可靠交易的消息处理方法及装置。
背景技术
网关又被称为网间连接器、协议转换器。普遍意义上的网关在网络层以上实现网络互连(广域网与局域网),适用于两个具有不同的两个高层协议的网络,是复杂的网络互联设备。而实际上,网关亦可以使用于不同的通信协议、数据格式或语言,甚至具有异种体系结构的系统间。
在分布式服务架构中,各系统间存在大量的消息交互,简单处理这些消息的方式即搭建一个消息中间件的集群,如Kafka、rabbitmq等,但是通过搭建消息中间件的集群的处理方式并不十分高效可靠。
发明内容
本申请提供了一种用于可靠交易的消息处理方法及装置,以至少解决当前临时处理消息的消息中间件的集群不适合可靠地长期处理大量消息的问题。
根据本申请的一个方面,提供了一种用于可靠交易的消息处理方法,包括:
解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件;
通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。
在一实施例中,解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件,包括:
从第一消息中间件的源队列中获取消息报文;
利用树结构对消息报文的名称进行分隔和解析;
根据适配规则和过滤规则将分隔得到的消息报文的字段路由至第二消息中间件的队列中。
在一实施例中,用于可靠交易的消息处理方法还包括:
根据预先配置的文件生成相应个数的进程用于处理消息报文。
在一实施例中,通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,包括:
获取可读队列深度;
若可读队列中的消息报文数量不为0,派生线程处理可读队列中的消息报文,派生的线程的数量不超过预设值。
在一实施例中,用于可靠交易的消息处理方法还包括:
当消息报文发送失败时,将消息报文放至预先建立的错误队列中并尝试重新发送。
根据本申请的另一个方面,还提供了一种用于可靠交易的消息处理装置,包括:
解析单元,用于解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件;
轮询处理单元,用于通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。
在一实施例中,解析单元包括:
消息报文获取模块,用于从第一消息中间件的源队列中获取消息报文;
分隔解析模块,用于利用树结构对消息报文的名称进行分隔和解析;
路由模块,用于根据适配规则和过滤规则将分隔得到的消息报文的字段路由至第二消息中间件的队列中。
在一实施例中,用于可靠交易的消息处理装置还包括:
进程生成单元,用于根据预先配置的文件生成相应个数的进程用于处理消息报文。
在一实施例中,轮询处理单元包括:
队列深度获取模块,用于获取可读队列深度;
轮询模块,用于若可读队列中的消息报文数量不为0,派生线程处理可读队列中的消息报文,派生线程数量不超过预设值。
在一实施例中,用于可靠交易的消息处理装置还包括:
失败重试模块,用于当消息报文发送失败时,将消息报文放至预先建立的错误队列中并尝试重新发送。
本申请以多进程的方式进行线程派生,用多线程高效地处理报文收发,同时运营线程池统一管理派生出的线程,提高了报文分发效率。另外,利用树结构的方式解析消息类型,并在配置文件中以过滤规则、适配规则两种规则完成消息转发后的分类放置,使得消息能够被合理分类,达到了统一管理处理后消息的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请提供的一种消息网关的架构图。
图2为本申请提供的一种用于可靠交易的消息处理方法流程图。
图3为本申请实施例中解析消息报文的方法流程图。
图4为本申请实施例中轮询线程深度的方法流程图。
图5为本申请实施例中报文流转过程示意图。
图6为本申请实施例中应用适配规则和过滤规则进行过滤的示意图。
图7为本申请提供的一种用于可靠交易的消息处理装置结构框图。
图8为本申请实施例中解析单元的结构框图。
图9为本申请实施例中轮询处理单元的结构框图。
图10为应用本申请所提供的方法处理单笔报文的流程实例。
图11为本申请实施例中派生线程的生命周期图。
图12为本申请实施例中一种电子设备的具体实施方式。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在分布式服务架构中,各系统间存在大量的消息交互,简单处理这些消息的方式即搭建一个消息中间件的集群,如Kafka、rabbitmq等。而更高级些的方式就是建立消息网关来统一处理消息。基于此,本申请提供了一种消息网关以解决上述问题,该网关主要用于提供消息的分类和转发功能。
如图1所示,为本申请提供的消息网关的架构,在一实施例中,消息网关的配置文件主要分为四个部分:
a)进程信息配置:
对主控程序所启动的进程开关、进程数、共享内存路径、启动命令等项以参数的方式进行了配置。
b)线程信息配置:
对MQ、Kafka两类中间件的参数(如集群地址、连接工厂的名称等)以及队列信息(队列名、主题名、适配规则等)进行了配置。
c)主控log4j2日志配置:
对主控程序输出的日志进行记录,根据已输出日志的大小进行日志分类(当大小达到设定值时归入含有日期的(年月日)的文件夹中)。
d)进程log4j2日志配置:
对进程输出的日志进行记录,输出的日志分为发送成功日志、发送失败日志、进程运行日志,根据已输出日志的大小进行日志分类(当大小达到设定值时归入含有日期的(年月日)的文件夹中)。
消息网关的信息文件主要分为以下五个部分:
a)运行命令:
放置消息网关启动命令的文件。
b)错误码:
放置消息网关可能抛出的相应错误码与错误信息。
c)版本信息:
现有消息网关的版本。
d)命令提示:
当对消息网关进行启动、重启、停止、模块信息查询等操作出现命令书写错误时会出现的所有命令的列表。
e)共享内存:
读取配置文件后生成的共享内存文件。
消息网关中的Libs用于存放消息网关编译生成的jar包、需要使用的第三方jar包;脚本文件中包含消息网关的启动脚本、MQ的发送等脚本、Kafka的发送等脚本;代码类文件包括公共层、公共服务层、FileMap和服务类,其中具体如下:
a)公共层:
1)启动命令解析:
对配置中的启动命令(启动进程等)做解析并以键值对的形式存放。
2)中间件:
包含MQ与Kafka的一系列中间件,如:连接器、会话类、回调函数、生产类、消费类等。
3)共享内存:
由于java自身不带共享内存机制,故在本发明中创建共享内存用于存放消息网关使用到的配置的信息,在读取完毕后消息网关将不再重复读取配置文件,而是从共享内存中获取信息。
4)树结构:
用于解析目标报文的报文类型,以后续与适配规则、过滤规则做匹配。
5)工具类:
与文件的读取、进程的相关操作(获取进程号、杀死进程、发送信号等)。
6)错误类:
定义抛错类、错误码等。
b)公共服务层:
1)报文解析:
用于简单解析目标报文的类别等内容为后续的报文收发提供信息。
2)进程配置读取:
用于读取进程相关信息。
3)线程配置读取:
用于读取线程相关信息。
c)FileMap:
与Kafka向MQ的报文发送操作有关。
d)服务类:
包含消息网关的主要功能,如消息网关的启动类、主控类、线程的派生即报文处理类等多种功能类。在代码类文件中,公共层作为最底层模块为其他的代码类做服务,而公共服务层则主要为服务类提供支持。
以本申请提供的消息网关为执行主体,本申请还提供了一种用于可靠交易的消息处理方法,如图2所示,包括:
S201:解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件。
消息网关的启动命令将会触发主控程序的启动,并将配置文件中的内容写入到自动创建的共享内存中,根据log4j2配置设定的等级进行日志的输出。同时,主控程序将根据配置文件并生成相应个数的进程。
S202:通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。
根据线程的配置文件,定时循环查询相应的队列深度(在下方的业务实例中做具体说明),当队列中存在报文时,便会利用线程池派生处理线程并根据配置的过滤规则、适配规则处理报文的收发,后将报文处理结果根据log4j2文件写入相应的日志中进行记录。
在一实施例中,解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件,如图3所示,包括:
S301:从第一消息中间件的源队列中获取消息报文。
S302:利用树结构对消息报文的名称进行分隔和解析。
S303:根据适配规则和过滤规则将分隔得到的消息报文的字段路由至第二消息中间件的队列中。
在一具体实施例中,假如用户在系统A中使用消息中间件MQ,并需要将A中的报文转发至系统B中,其中系统B使用的消息中间件为Kafka,如图5所示,为报文的流转过程,首先用户需要在线程配置文件中配置好MQ的发送队列名称,以便消息网关拉取报文;其次,用户需要同时配置好报文发送对应的Kafka主题名称以及适配规则和过滤规则,以告知消息网关从MQ一端接收到报文后的放置方式。当报文从MQ的源队列发到消息网关时,消息网关会利用树结构进行报文名称的解析(如:abc.xyz.df.xml按”.”进行分割),并根据适配规则和过滤规则将报文路由到Kafka对应的主题。两种规则的示意图如图6所示,适配规则作为一个广泛的规则(例如将abc.开头的报文放入队列1中),而过滤规则则可作为建立在适配规则外的独特规则(例如将abc.xyz.df.xml放入队列2而非队列1)。
在一实施例中,用于可靠交易的消息处理方法还包括:
根据预先配置的文件生成相应个数的进程用于处理消息报文。
消息网关的启动命令将会触发主控程序的启动,并将配置文件中的内容写入到自动创建的共享内存中,根据log4j2配置设定的等级进行日志的输出。同时,主控程序将根据配置文件并生成相应个数的进程。
在一实施例中,通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,如图4所示,包括:
S401:获取可读队列深度。
S402:若可读队列中的消息报文数量不为0,派生线程处理可读队列中的消息报文,派生的线程的数量不超过预设值。
在一具体实施例中,通过中间件的MQ操作类创建MQ的浏览队列(可读队列),若该队列中报文数量大于0,则进程会派生线程处理报文,其中可派生线程的最大数量在配置文件中做约束。
在一实施例中,用于可靠交易的消息处理方法还包括:
当消息报文发送失败时,将消息报文放至预先建立的错误队列中并尝试重新发送。
基于同一发明构思,本申请实施例还提供了一种用于可靠交易的消息处理装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该用于可靠交易的消息处理装置解决问题的原理与用于可靠交易的消息处理方法相似,因此用于可靠交易的消息处理装置的实施可以参见用于可靠交易的消息处理方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
如图7所示,本申请提供了一种用于可靠交易的消息处理装置,包括:
解析单元701,用于解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件;
轮询处理单元702,用于通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。
在一实施例中,如图8所示,解析单元701包括:
消息报文获取模块801,用于从第一消息中间件的源队列中获取消息报文;
分隔解析模块802,用于利用树结构对消息报文的名称进行分隔和解析;
路由模块803,用于根据适配规则和过滤规则将分隔得到的消息报文的字段路由至第二消息中间件的队列中。
在一实施例中,用于可靠交易的消息处理装置还包括:
进程生成单元,用于根据预先配置的文件生成相应个数的进程用于处理消息报文。
在一实施例中,如图9所示,轮询处理单元702包括:
队列深度获取模块901,用于获取可读队列深度;
轮询模块902,用于若可读队列中的消息报文数量不为0,派生线程处理可读队列中的消息报文,派生线程数量不超过预设值。
在一实施例中,用于可靠交易的消息处理装置还包括:
失败重试模块,用于当消息报文发送失败时,将消息报文放至预先建立的错误队列中并尝试重新发送。
图10为应用本申请所提供的方法处理单笔报文的流程实例:
线程首先创建Kafka生产者类,然后根据配置文件中对KafkaAckmode(同步或异步)由Kafka生产者类返回标志创建相应的MQ消费者类(同步时创建单消费者类),再从消费者类生成包含报文内容、报文ID的实体类,之后在线程中对报文内容进行解析。解析完成后由Kafka生产者类完成报文向Kafka的发送工作,在发送时调用Kafka的回调函数类进行对最终结果的检查处理,返回给MQ事务可提交的标志或相应的错误处理。
错误处理的方式:
由于配置文件等错误造成的报文发送失败,必须重启消息网关的问题,报文会放入错误队列中,供用户查看;由于暂时性、可恢复的问题,如Kafka网络不通造成的报文发送失败,消息网关会将失败报文不断回滚并重试发送。
进程、线程详解:
此处将结合每一个进程在启动的时候都会生成一个线程池,用于规范与管理线程(当线程池达到最大容量时,执行拒绝策略,不再接收接下来的任务)。进程中会循环判断主控是否存在,若否则退出,若是则进入下一步遍历队列深度。当队列中的报文数量不为0时,针对现有线程个数、需要派生的数量与最大限制线程个数进行逻辑判断后会派生桥接线程处理相应的报文。此处由于每个进程都会对当前的队列深度进行判断,故一笔报文可能会由不同的进程派生出多个线程进行处理,但当某个线程真正在处理报文时,其余线程处于空闲状态。在本节单笔报文处理流程中所提到的:线程会从MQ消费者类获取含报文内容与报文ID的实体类,处于空闲状态的线程所获取到的实体类实际上为空,故设置循环判断若接下来60次(预设上限)获取的报文皆为空时,该线程自动退出(如图11所示)。
本申请为以报文类信息做传输的不同消息系统间提供了一种便于将消息进行管理分类和转发的消息网关,由本申请提供的消息网关来统一处理两个消息中间件之间的消息。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图12,所述电子设备具体包括如下内容:
处理器(processor)1201、内存1202、通信接口(Communications Interface)1203、总线1204和非易失性存储器1205;
其中,所述处理器1201、内存1202、通信接口1203通过所述总线1204完成相互间的通信;
所述处理器1201用于调用所述内存1202和非易失性存储器1205中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S201:解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件。
S202:通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。
本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S201:解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将消息报文路由至第二消息中间件。
S202:通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。
在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
Claims (12)
1.一种用于可靠交易的消息处理方法,其特征在于,包括:
解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将所述消息报文路由至第二消息中间件;消息网关的启动命令将会触发主控程序的启动,并将配置文件中的内容写入到自动创建的共享内存中,根据log4j2配置设定的等级进行日志的输出,同时,主控程序将根据配置文件并生成相应个数的进程;
通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理所述可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。
2.根据权利要求1所述的用于可靠交易的消息处理方法,其特征在于,所述解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将所述消息报文路由至第二消息中间件,包括:
从第一消息中间件的源队列中获取所述消息报文;
利用树结构对所述消息报文的名称进行分隔和解析;
根据所述适配规则和过滤规则将分隔得到的所述消息报文的字段路由至第二消息中间件的队列中。
3.根据权利要求2所述的用于可靠交易的消息处理方法,其特征在于,还包括:
根据预先配置的文件生成相应个数的进程用于处理所述消息报文。
4.根据权利要求3所述的用于可靠交易的消息处理方法,其特征在于,所述通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理所述可读队列中的消息报文,包括:
获取可读队列深度;
若所述可读队列中的消息报文数量不为0,派生线程处理可读队列中的消息报文,派生的所述线程的数量不超过预设值。
5.根据权利要求1所述的用于可靠交易的消息处理方法,其特征在于,还包括:
当消息报文发送失败时,将所述消息报文放至预先建立的错误队列中并尝试重新发送。
6.一种用于可靠交易的消息处理装置,其特征在于,包括:
解析单元,用于解析从第一消息中间件接收到的消息报文,并根据预先设置的适配规则和过滤规则将所述消息报文路由至第二消息中间件;消息网关的启动命令将会触发主控程序的启动,并将配置文件中的内容写入到自动创建的共享内存中,根据log4j2配置设定的等级进行日志的输出,同时,主控程序将根据配置文件并生成相应个数的进程;
轮询处理单元,用于通过线程轮询的方式获取可读队列深度,并根据获取结果派生线程处理所述可读队列中的消息报文,并将处理后的消息报文路由至第二消息中间件。
7.根据权利要求6所述的用于可靠交易的消息处理装置,其特征在于,所述解析单元包括:
消息报文获取模块,用于从第一消息中间件的源队列中获取所述消息报文;
分隔解析模块,用于利用树结构对所述消息报文的名称进行分隔和解析;
路由模块,用于根据所述适配规则和过滤规则将分隔得到的所述消息报文的字段路由至第二消息中间件的队列中。
8.根据权利要求7所述的用于可靠交易的消息处理装置,其特征在于,还包括:
进程生成单元,用于根据预先配置的文件生成相应个数的进程用于处理所述消息报文。
9.根据权利要求8所述的用于可靠交易的消息处理装置,其特征在于,所述轮询处理单元包括:
队列深度获取模块,用于获取可读队列深度;
轮询模块,用于若所述可读队列中的消息报文数量不为0,派生线程处理可读队列中的消息报文,所述派生线程数量不超过预设值。
10.根据权利要求6所述的用于可靠交易的消息处理装置,其特征在于,还包括:
失败重试模块,用于当消息报文发送失败时,将所述消息报文放至预先建立的错误队列中并尝试重新发送。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至5中任一项所述用于可靠交易的消息处理方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5中任一项所述用于可靠交易的消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011220870.1A CN112291254B (zh) | 2020-11-05 | 2020-11-05 | 一种用于可靠交易的消息处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011220870.1A CN112291254B (zh) | 2020-11-05 | 2020-11-05 | 一种用于可靠交易的消息处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112291254A CN112291254A (zh) | 2021-01-29 |
CN112291254B true CN112291254B (zh) | 2023-05-05 |
Family
ID=74351654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011220870.1A Active CN112291254B (zh) | 2020-11-05 | 2020-11-05 | 一种用于可靠交易的消息处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112291254B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028247B (zh) * | 2023-03-27 | 2023-06-13 | 中新宽维传媒科技有限公司 | 一种基于消息中间件的文件采集系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868032A (zh) * | 2016-03-28 | 2016-08-17 | 中国建设银行股份有限公司 | 一种支持多系统接入的报文处理系统及方法 |
CN108848031A (zh) * | 2018-06-14 | 2018-11-20 | 深圳金证引擎科技有限公司 | 信息传输方法及装置 |
CN109257435A (zh) * | 2018-10-22 | 2019-01-22 | 中国银行股份有限公司 | 基于消息中间件的多实例多子系统应用的通信系统 |
CN110535713A (zh) * | 2018-05-24 | 2019-12-03 | 中国人民财产保险股份有限公司 | 监控管理系统以及监控管理方法 |
CN111314213A (zh) * | 2020-01-20 | 2020-06-19 | 上海瀚银信息技术有限公司 | 一种跨局域网络的通讯网关系统 |
-
2020
- 2020-11-05 CN CN202011220870.1A patent/CN112291254B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105868032A (zh) * | 2016-03-28 | 2016-08-17 | 中国建设银行股份有限公司 | 一种支持多系统接入的报文处理系统及方法 |
CN110535713A (zh) * | 2018-05-24 | 2019-12-03 | 中国人民财产保险股份有限公司 | 监控管理系统以及监控管理方法 |
CN108848031A (zh) * | 2018-06-14 | 2018-11-20 | 深圳金证引擎科技有限公司 | 信息传输方法及装置 |
CN109257435A (zh) * | 2018-10-22 | 2019-01-22 | 中国银行股份有限公司 | 基于消息中间件的多实例多子系统应用的通信系统 |
CN111314213A (zh) * | 2020-01-20 | 2020-06-19 | 上海瀚银信息技术有限公司 | 一种跨局域网络的通讯网关系统 |
Non-Patent Citations (1)
Title |
---|
"使用MB将MQ与其它消息中间件产品集成";徐琼;《软件导刊》;20051130;第1-4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112291254A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108076098A (zh) | 一种业务处理方法及系统 | |
CN108134690B (zh) | 网络业务部署流程控制方法、装置及系统 | |
CN109088820B (zh) | 一种跨设备链路聚合方法、装置、计算装置和存储介质 | |
CN107908488B (zh) | 消息请求接口交互方法、装置、计算机设备及存储介质 | |
CN107347062A (zh) | 一种日志数据处理的方法、电子设备和可读存储介质 | |
EP4191906A1 (en) | Fault diagnosis methods, fault diagnosis rule determining method, diagnosis function deployment method, related device, and storage medium | |
CN113709003A (zh) | 通过网络流量数据自动生成测试用例的系统、方法及介质 | |
CN103441861A (zh) | 一种数据记录生成方法及装置 | |
CN111181784A (zh) | 一种网口状态管理方法、状态机引擎装置、设备及介质 | |
CN112291254B (zh) | 一种用于可靠交易的消息处理方法及装置 | |
CN107040613A (zh) | 一种报文传输方法及系统 | |
CN106484488B (zh) | 一体化云编译方法和系统 | |
CN102902574A (zh) | 一种多信息流节点的协同处理方法及装置 | |
CN113360386A (zh) | 交换芯片驱动测试方法、装置、电子设备和存储介质 | |
CN111200654A (zh) | 客户端请求错误处理方法及装置 | |
US20050038895A1 (en) | Method and apparatus for sending data from one protocol layer to another | |
CN113934552A (zh) | 功能代码的确定方法及装置、存储介质、电子装置 | |
CN108694046B (zh) | 容器装配方法和装置 | |
CN112597119A (zh) | 一种处理日志的生成方法、装置及存储介质 | |
CN112910697A (zh) | 一种故障处理方法及装置 | |
Chen | Passive interoperability testing for communication protocols | |
Aichroth et al. | The MICO Broker: An Orchestration Framework for Linked Data Extractors. | |
CN112565041B (zh) | 一种ff现场总线系统的硬件信息配置方法、装置及介质 | |
CN109284216A (zh) | 系统监控的方法及终端设备 | |
CN112073466B (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 |