一种消息传输方法及系统、计算机设备与流程

文档序号:15980088发布日期:2018-11-17 00:13阅读:129来源:国知局

本发明涉及计算机技术领域,尤其涉及一种消息传输方法及系统、计算机设备。

背景技术

通常针对异构系统与系统之间的消息传递方法通常采用webservice服务或ibmmq消息队列技术完成数据交互。采用webservice技术时传输双方按照约定的接口规范文档完成服务发布和请求调用,即可完成相互之间的数据交互。使用ibmmq消息队列技术时,mq产品作为消息传递的重要中间媒介进行消息传输。该产品提供了多种开发语言的api。传输双方需根据mq提供的特定api进行消息发送和接收。

然而,采用webservice技术和ibmmq技术的消息传递系统均存在高并发场景中消息传递和处理效率低下的问题。



技术实现要素:

本发明所要解决的技术问题是针对现有技术的不足,提供一种一种消息传输方法及系统、计算机设备,能够提升高并发场景中消息传递和处理的效率。

本发明解决上述技术问题的技术方案如下:一种消息传输方法,包括:

程序启动后,消息系统加载安全配置表,且当配置数据为需安全处理时,从所述安全配置表中获取配置信息,其中,所述安全配置表包括:是否进行消息系统安全处理、消息系统安全处理方式、消息系统证书位置配置、是否进行报文安全处理、报文密码;

接收具有证书的消息生产者发送的经过安全处理的报文;

根据所述配置信息对所述报文进行加密,以便具有所述证书的消息消费者接收加密后的所述报文。

本发明的有益效果是:通过采用消息系统作为消息传输的媒介,支持分布式部署,消息传输效率大幅提高,可以灵活配置安全处理和安全验证方式、报文格式和校验方法,降低了新需求加入后系统的开发难度和维护成本。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步地,还包括:所述消息生产者根据所述配置信息将待发送数据转换成预定格式的报文,并向所述消息系统发送所述报文。

进一步地,还包括:

所述消息消费者根据校验报文对接收的所述报文进行校验,所述校验报文为配置的具有所述预定格式的报文;

当校验结果为未通过时,根据配置的失败处理方式进行处理。

采用上述进一步方案的有益效果是:通过采用了可配置的安全处理和安全验证、可配置的报文格式转换和校验,将消息发送者和接收者进行灵活匹配,达到消息传递系统的最大灵活性。且适合于大数据量、高并发场景下的消息传递,当新增消息发送方和消息接收方时,只需要调整报文格式、安全策略和kafka消息系统配置,系统即可传输新的业务数据,极大地减少了因需求变更而引起的大量开发工作。

进一步地,所述预定格式包括:报文类型、消息种类、报文标签、固定值、报文格式和失败处理方式,所述方法还包括:

将所述预定格式和所述校验报文存储在缓存中。

采用上述进一步方案的有益效果是:通过将预定格式和校验报文等配置信息存储在本地缓存中,避免每次从数据库读取,可以有效的提升消息传输的速度。

进一步地,所述消息生产者和所述消息消费者均为多个,所述方法还包括:

所述消息系统根据消息种类进行kafka主题分类;

其中,所述接收具有证书的消息生产者发送的经过安全处理的报文,包括:

所述消息系统接收多个所述消息生产者同时发送的所述报文,并将每个所述报文在其对应的消息种类所对应的主题中进行分区存储;

每个所述消息消费者同时订阅多个消息种类的报文,并从每个消息种类对应的主题的分区中读取对应的报文。

采用上述进一步方案的有益效果是:通过消息种类分区存储方式,解决了高并发场景中消息传输的瓶颈,消息消费者可以批量处理队列里的消息,处理速度更快,而且消息能被多个消费者重复消费。

进一步地,所述方法还包括:

当所述消息消费者接收所述报文失败时,重试接收;

当所述消息消费者重试接收的次数超出配置的重试次数时,将所述报文发送到对应主题的错误消息主题中,并记录日志信息。

采用上述进一步方案的有益效果是:通过采用重试策略,可以提升系统的可靠性。

进一步地,所述配置信息包括:安全协议、证书位置和密码配置字段,其中,所述安全处理方式由所述安全协议确定,所述安全协议包括:ssl协议、sasl_plaintext协议和sasl_ssl协议。

进一步地,所述方法还包括:所述消息消费者将接收到的所述报文保存到内存数据库中,并设置所述报文的过期时间。

采用上述进一步方案的有益效果是:通过采用消息文件备份的策略,可以提高系统的可靠性。

本发明解决上述技术问题的另一种技术方案如下:一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例中的消息传输方法的步骤。

本发明解决上述技术问题的另一种技术方案如下:一种消息传输系统,包括:多个消息生产者、消息系统和多个消息消费者,其中,

所述消息系统,用于在程序启动后,加载安全配置表,且当配置数据为需安全处理时,从所述安全配置表中获取配置信息,其中,所述安全配置表包括:是否进行消息系统安全处理、消息系统安全处理方式、消息系统证书位置配置和密码配置、是否进行报文安全处理、报文密码;

每个所述消息生产者,用于根据所述配置信息将待发送数据转换成预定格式的报文,并向所述消息系统发送所述报文;

所述消息系统,还用于接收具有证书的所述消息生产者发送的经过安全处理的报文,并根据所述配置信息对所述报文进行加密;

每个所述消息消费者,用于根据校验报文对接收的所述报文进行校验,所述校验报文为配置的具有所述预定格式的报文,且当校验结果为未通过时,根据配置的失败处理方式进行处理。

本发明的有益效果是:消息传输系统引用kafka消息组件,通过分布式、支持多分区的kafka消息系统,解决了高并发场景中消息传输的瓶颈,消息消费者可以批量处理队列里的消息,处理速度更快。并且本系统采用了可配置的安全处理和安全验证、可配置的报文格式转换和校验,将消息发送者和接收者进行灵活匹配,达到消息传递系统的最大灵活性。

本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所述的一种消息传输方法的示意性流程图;

图2为本发明另一实施例所述的一种消息传输方法的示意性流程图;

图3为本发明另一实施例所述的一种消息传输方法的示意性流程图;

图4为本发明另一实施例所述的一种消息传输方法的示意性流程图;

图5为本发明另一实施例所述的一种消息传输方法的示意性流程图;

图6为本发明另一实施例所述的一种消息传输方法的示意性流程图;

图7为本发明实施例所述的一种消息传输系统的示意性结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

如图1所示,一种消息传输方法100包括:

101、程序启动后,消息系统加载安全配置表,且当配置数据为需安全处理时,从安全配置表中获取配置信息。

其中,安全配置表可以包括:是否进行消息系统安全处理、消息系统安全处理方式、消息系统证书位置配置、是否进行报文安全处理、报文密码。

102、接收具有证书的消息生产者发送的经过安全处理的报文。

103、根据配置信息对报文进行加密,以便具有证书的消息消费者接收加密后的报文。

具体的,在该实施例中,程序启动后,消息系统加载全部的安全配置表,当用来配置消息系统的配置数据为需安全处理时,从安全配置表中获取配置信息。其中,安全配置表中包括了是否进行消息系统安全处理、消息系统安全处理方式、消息系统证书位置配置、是否进行报文安全处理、报文密码等内容。

配置数据为软件数据库中的配置表信息,用来配置系统的;消息和报文则是软件要处理的信息。

消息生产者和消息消费者是分离的。消息生产者需要在安全配置表中配置消息生产者的证书路径;消息消费者需要在安全配置表中配置消息消费者的证书路径。证书内容包括:用户名和密码。

需要说明的是,在该实施例中,配置信息可以包括:安全协议、证书位置和密码配置字段等,需要说明的是,配置信息可以包括更多的参数,本发明实施例并不局限与此。

其中,安全处理方式由安全协议确定,例如:安全协议可以包括:ssl协议、sasl_plaintext协议和sasl_ssl协议,本发明实施例对此不作任何限定。

应理解,在该实施例中,消息系统可以采用kafka消息组件。

上述实施例中提供的一种消息传输方法,通过采用消息系统作为消息传输的媒介,支持分布式部署,消息传输效率大幅提高,可以灵活配置安全处理和安全验证方式、报文格式和校验方法,降低了新需求加入后系统的开发难度和维护成本。

可选地,在一个实施例中,如图2所示,在102之前,该方法100还可以包括:

104、消息生产者根据配置信息将待发送数据转换成预定格式的报文,并向消息系统发送报文。

具体的,在该实施例中,程序启动后,消息系统加载安全配置表,且当配置数据为需安全处理时,从安全配置表中获取配置信息。具有证书的消息生产者从消息系统获得配置信息,并根据配置信息将待发送数据转换成预定格式的报文后向消息系统发送该报文。消息系统接收该报文,并根据配置信息对该报文进行加密,以便具有该证书的消息消费者接收加密后的该报文。

应理解,在该实施例中,消息生产者可以将同一批待传输数据转换成预定格式的报文,自动压缩后向消息系统发送,消息消费者可以批量接收并解压缩,从而实现批处理,降低网络负载。

可选地,在另一个实施例中,如图3所示,在103之后,该方法100还可以包括:

105、消息消费者根据校验报文对接收的报文进行校验,校验报文为配置的具有预定格式的报文。

106、当校验结果为未通过时,根据配置的失败处理方式进行处理。

具体的,在该实施例中,程序启动后,消息系统加载安全配置表,且当配置数据为需安全处理时,从安全配置表中获取配置信息。具有证书的消息生产者从消息系统获得配置信息,并根据配置信息将待发送数据转换成预定格式的报文后向消息系统发送该报文。消息系统接收该报文,并根据配置信息对该报文进行加密,具有该证书的消息消费者接收加密后的该报文后,根据校验报文对接收的报文进行校验,校验报文为配置的具有预定格式的报文。

需要说明的是,这里对报文的校验具体为对报文格式的校验,如:报文标签名是否正确,数量是不是一致等。

当校验结果为未通过时,根据配置的失败处理方式进行处理。例如:记录日志或抛弃等。当校验结果为通过时,将报文进行相应的业务处理,数据存入数据库。

上述实施例中提供的一种消息传输方法,通过采用了可配置的安全处理和安全验证、可配置的报文格式转换和校验,将消息发送者和接收者进行灵活匹配,达到消息传递系统的最大灵活性。且适合于大数据量、高并发场景下的消息传递,当新增消息发送方和消息接收方时,只需要调整报文格式、安全策略和kafka消息系统配置,系统即可传输新的业务数据,极大地减少了因需求变更而引起的大量开发工作。

可选地,在另一个实施例中,预定格式包括:报文类型、消息种类、报文标签、固定值、报文格式和失败处理方式,该方法100还可以包括:

将预定格式和校验报文存储在缓存中。

在该实施例中,通过将预定格式和校验报文等配置信息存储在本地缓存中,避免每次从数据库读取,可以有效的提升消息传输的速度。

可选地,在另一个实施例中,如图4所示,消息生产者和消息消费者均为多个,该方法100还可以包括:

107、消息系统根据消息种类进行kafka主题分类。

则,步骤104具体为:

多个消息生产者根据配置信息将各自的待发送数据转换成预定格式的报文,并同时向消息系统发送报文。

则,步骤102具体为:

消息系统接收多个消息生产者同时发送的报文,并将每个报文在其对应的消息种类所对应的主题中进行分区存储。

108、每个消息消费者同时订阅多个消息种类的报文,并从每个消息种类对应的主题的分区中读取对应的报文。

具体的,在该实施例中,消息生产者和消息消费者均为多个,消息系统可以根据消息种类进行kafka主题分类,当多个消息生产者同时向消息系统发送报文时,消息系统将接收的每个报文进行分区存储,每个报文的消息种类所对应一个主题,不同主题存储在不同分区中。而每个消息消费者可以同时订阅多个消息种类的报文,并从每个消息种类对应的主题的分区中读取对应的报文。

例如:消息生产者为6个,消息消费者为2个,消息种类有5种,则kafka主题对应有5个分类。6个消息生产者同时向消息系统发送报文,分别记为:报文1、报文2、报文3、报文4、报文5和报文6。报文1、报文2、报文3为同一种类的消息;报文4、报文5为同一种类的消息;报文6为一个种类的消息。

消息系统将接收的每个报文进行分区存储,每个报文的消息种类所对应一个主题,不同主题存储在不同分区中。也就是说:将报文1、报文2、报文3存储在其主题a对应的一个分区a中;报文4、报文5存储在其主题b对应的一个分区b中;报文6存储在其主题c对应的一个分区c中。

而每个消息消费者可以同时订阅多个消息种类的报文,并从每个消息种类对应的主题的分区中读取对应的报文。例如:消息消费者1同时订阅了2个消息种类,对应主题a和主题c;消息消费者2同时订阅了2个消息种类,对应主题b和主题c。则,消息消费者1分别从主题a对应的分区a和主题c对应的分区c中读取对应的报文;消息消费者2分别从主题b对应的分区b和主题c对应的分区c中读取对应的报文。

上述实施例中提供的一种消息传输方法,通过消息种类分区存储方式,解决了高并发场景中消息传输的瓶颈,消息消费者可以批量处理队列里的消息,处理速度更快,而且消息能被多个消费者重复消费。

需要说明的是,在该实施例中,消息生产者和消息消费者的数量可以相同也可以不同,本发明实施例对此不作任何限定。

应理解,在该实施例中,还可以包括步骤104,或者步骤109-110,或者步骤111,或者上述步骤的组合,为了描述的简洁,在此不再赘述。

可选地,在另一个实施例中,如图5所示,该方法100还可以包括:

109、当消息消费者接收报文失败时,重试接收。

110、当消息消费者重试接收的次数超出配置的重试次数时,将报文发送到对应主题的错误消息主题中,并记录日志信息。

为了解决批处理被重试处理阻塞的问题,本方案在发送和接收(即:消息生成者和消息消费者)之间采用了可靠重试策略。具体的,在该实施例中,当消息消费者接收报文失败时,可以重试接收,且当重试接收的次数超出配置的重试次数时,将报文发送到对应主题的错误消息主题中,并记录日志信息,消息消费者就可以继续接收下一报文。

需要说明的是,在该实施例中,还可以包括步骤104,或者步骤107、104、108,或者步骤111,或者上述步骤的组合,为了描述的简洁,在此不再赘述。

可选地,在另一个实施例中,如图6所示,该方法100还可以包括:

111、消息消费者将接收到的报文保存到内存数据库中,并设置该报文的过期时间。

为了提高系统的可靠性,本方案中还采用了消息文件备份的策略。具体的,在该实施例中,消息消费者将接收的消息保存到内存数据库中,并设置过期时间。当出现异常情况时,可以通过查看内存数据库中接收到的原始报文查找问题原因。当到达过期时间,抛弃该报文,以利用空出该报文占用的内存空间来存储后续接收的报文。

应理解,在上述各实施例中,报文和消息的内容本质上是相同的,报文只是消息传输过程中的一种具体形式。另外,上述各实施例中的消息生产者和消息消费者都是具有证书的,只有具有证书才可以通过消息系统进行消息的传输。

需要说明的是,在该实施例中,还可以包括步骤104,或者步骤104、105-106,或者步骤107-108,或者步骤109-110,或者上述步骤的组合,为了描述的简洁,在此不再赘述。

应理解,在本发明各实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时实现如上述实施例中的消息传输方法的步骤。

上文中结合附图1-6详细描述了一种消息传输方法的技术方案,下面结合附图7详细描述一种消息传输系统的技术方案。

如图7所示的一种消息传输系统200包括:多个消息生产者210、消息系统220和多个消息消费者230,其中,

消息系统220,用于在程序启动后,加载安全配置表,且当配置数据为需安全处理时,从安全配置表中获取配置信息。其中,安全配置表包括:是否进行消息系统安全处理、消息系统安全处理方式、消息系统证书位置配置和密码配置、是否进行报文安全处理、报文密码。

每个消息生产者210,用于根据配置信息将待发送数据转换成预定格式的报文,并向消息系统220发送报文。

消息系统220,还用于接收具有证书的消息生产者210发送的经过安全处理的报文,并根据配置信息对报文进行加密。

每个消息消费者230,用于根据校验报文对接收的报文进行校验,校验报文为配置的具有预定格式的报文,且当校验结果为未通过时,根据配置的失败处理方式进行处理。

具体的,在该实施例中,每个消息生产者210和每个消息消费者230都可以具有消息系统220配置的证书,以确保双方之间可以进行消息传输。另外,每个消息生产者210可以将同一批的待传输数据转换成预定格式的报文,进行压缩后向消息系统220发送,消息消费者230可以批量接收并解压缩,从而实现批处理,降低网络负载。

上述实施例中的消息传输系统,引用kafka消息组件,通过分布式、支持多分区的kafka消息系统,解决高并发场景中消息传输瓶颈,消息消费者可以批量处理队列里的消息,处理速度更快。并且本系统采用了可配置的安全处理和安全验证、可配置的报文格式转换和校验,将消息发送者和接收者进行灵活匹配,达到消息传递系统的最大灵活性。

可选地,在一个实施例中,消息系统220还可以根据消息种类进行kafka主题分类,接收多个消息生产者同时发送的报文,并将每个报文在其对应的消息种类所对应的主题中进行分区存储。每个消息消费者230可以同时订阅多个消息种类的报文,并从每个消息种类对应的主题的分区中读取对应的报文。

可选地,在另一个实施例中,每个消息消费者230,还用于当接收报文失败时,重试接收,并在重试接收的次数超出配置的重试次数时,将报文发送到对应主题的错误消息主题中,并记录日志信息。

另外,每个消息消费者230,还用于将接收到的报文保存到内存数据库中,并设置该报文的过期时间,以便当出现异常情况时,可以通过查看内存数据库中接收到的原始报文查找问题原因。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1