消息处理系统、方法、计算机设备及可读存储介质与流程

文档序号:16971986发布日期:2019-02-26 18:38阅读:173来源:国知局
消息处理系统、方法、计算机设备及可读存储介质与流程

本发明涉及计算机领域,特别是涉及一种消息处理方法系统、装置、计算机设备及可读存储介质。



背景技术:

消息的收发是计算机领域的一项重要的分支,消息不仅仅指计算机设备与另一台计算机设备之间的信息交换,还包括应用软件与应用软件之间的信息交换。而很多时候,为了消息收发的方便与快捷,都会统一采用消息中间件管理消息的收发过程。

然而,现有的许多消息客户端都只能支持一种消息中间件,无法适配其他消息中间件,如果消息中间件崩溃,就会导致整个消息链崩溃。此外,在消息发送失败后,消息客户端只会抛出消息发送失败的异常,并不会记录原始的消息数据。

可见现有技术中,由于消息客户端与消息中间件的一一对应,消息的收发系统存在着不稳定的技术缺陷,同时,没有记录未发送成功的消息,也没有自动补偿发送的功能。



技术实现要素:

本发明实施例提供一种消息处理系统,旨在解决现有的消息收发系统存在的不稳定的技术缺陷,且没有记录未发送成功的消息,无法实现自动补偿发送的功能。

本发明实施例提供一种消息处理系统,所述消息处理系统包括第一消息客户端、第二消息客户端以及与所述第一消息客户端和第二消息客户端进行通信的配置中心以及多个消息中间件;

所述第一消息客户端,用于向所述配置中心发送获取与待发送的消息对应的主题信息的请求;接收所述配置中心返回的与所述待发送的消息对应的主题信息;根据所述主题信息确定与所述主题信息对应的消息中间件;向所述消息中间件发送所述消息;判断所述消息是否发送成功;当判断所述消息未成功发送时,暂存所述消息,并根据预设的规则返回至所述向所述消息中间件发送所述消息的步骤;

所述第二消息客户端,用于向所述配置中心发送获取与所述消息对应的主题信息的请求;接收所述配置中心返回的与所述消息对应的主题信息;根据所述主题信息确定与所述主题信息对应的消息中间件;向所述消息中间件发送获取所述消息的请求;接收所述消息中间件返回的消息;

所述配置中心,用于接收所述第一消息客户端发送的与所述消息对应的主题信息的请求,并向所述第一消息客户端返回与所述消息对应的主题信息;用于接收所述第二消息客户端发送的与所述消息对应的主题信息的请求,并向所述第二消息客户端返回与所述消息对应的主题信息。

所述消息中间件,用于接收所述第一消息客户端发送的消息;接收所述第二消息客户端发送的获取所述消息的请求,并向所述第二消息客户端返回所述消息。

本发明实施例还提供一种消息处理方法,所述消息处理方法应用于消息客户端,包括消息发送方法以及消息接收方法;

所述消息发送方法的步骤具体包括:

向配置中心发送获取与待发送的消息对应的主题信息的请求;

接收所述配置中心返回的与所述待发送的消息对应的主题信息;

根据所述主题信息确定与所述主题信息对应的消息中间件;

向所述消息中间件发送所述消息;

判断所述消息是否发送成功;

当判断所述消息未成功发送时,暂存所述消息,并根据预设的规则返回至所述向所述消息中间件发送所述消息的步骤;

所述消息接收方法的步骤具体包括:

向所述配置中心发送获取与所述消息对应的主题信息的请求;

接收所述配置中心返回的与所述消息对应的主题信息;

根据所述主题信息确定与所述主题信息对应的消息中间件;

向所述消息中间件发送获取所述消息的请求;

接收所述消息中间件返回的消息。

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

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述所述消息方法的步骤。

本发明实施例提供的消息处理系统,通过在配置中心中预先存储有与消息对应的主题信息,在消息客户端发送消息前,从配置中心获取与所述消息对应的主题信息,并根据所述主题信息确定消息中间件,实现了消息客户端与多个消息中间件相连的功能,在某一消息中间件崩溃时,能够动态切换到其他消息中间件,此外,通过判断所述消息是否发送成功,在判断所述消息未发送成功时,将消息暂存,便于后续相关人员进行查询,并通过定时任务或者其他任务类型自动返回到发送的步骤,将所述消息重新进行发送。

附图说明

图1为本发明实施例提供的一种消息处理系统的整体结构示意图;

图2为本发明实施例提供的第一消息客户端的结构示意图;

图3为本发明实施例提供的第二消息客户端的结构示意图;

图4为本发明实施例提供的消息处理方法的流程图;

图5为本发明另一种实施例提供的消息处理方法的流程图;

图6为本发明又一种实施例提供的消息处理方法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

在本发明实施例中,为解决现有消息客户端只能与一个消息中间件相连的技术缺陷,通过在配置中心中预先存储有与消息对应的主题信息,并能够在消息发送前从配置中心获取与所述消息对应的主题信息,并根据所述主体信息确定对应的消息中间件,实现了消息客户端与多个消息中间件相连的功能。此外,在判断所述消息发送失败后,通过暂存消息,方便后续相关人员的查询,还可以通过定时任务或者其他任务类型返回至重新发送的步骤,重新发送所述消息。

图1为本发明实施例提供的一种消息处理系统的整体结构示意图,,为了便于说明,仅示出与本发明实施例相关的部分。

在本发明实施例中,所述消息处理系统包括第一消息客户端101、第二消息客户端102以及与所述第一消息客户端和第二消息客户端进行通信的配置中心103以及多个消息中间件104。

所述第一消息客户端101,用于向所述配置中心发送获取与待发送的消息对应的主题信息的请求;接收所述配置中心返回的与所述待发送的消息对应的主题信息;根据所述主题信息确定与所述主题信息对应的消息中间件;向所述消息中间件发送所述消息;判断所述消息是否发送成功;当判断所述消息未成功发送时,暂存所述消息,并根据预设的规则返回至所述向所述消息中间件发送所述消息的步骤。

在本发明实施例中,所述第一消息客户端为消息发送客户端,用于向所述消息中间件发送消息。

在本发明实施例中,所述预设的规则包括通过定时任务定时的返回至所述发送消息的步骤以及通过条件任务在满足一定条件下返回至所述发送消息的步骤。

作为本发明的另一个实施例,所述第一消息客户端还用于在发送消息前启动发送监控线程,所述发送监控线程用于监控并获取所述消息在发送过程中的轨迹,根据所述轨迹生成发送日志文件,进一步的,所述日志文件保存在本地文件夹/opt/logs下面。

在本发明实施例中,通过启动发送监控线程能够实时跟踪消息发送的轨迹,并输出日志文件,便于后续相关人员进行分析。

作为本发明的又一个实施例,所述第一消息客户端还用于在发送消息前将所述消息以及所述消息的标识信息封包生成消息体。

作为本发明的又一个实施例,所述标识信息包括时间戳、uuid(universallyuniqueidentifier,通用唯一识别码)以及来源ip等字段。

作为本发明的又一个实施例,根据所述时间戳可以用于获取消息生成的时间信息,根据所述uuid可以用于获取消息生成装置的信息,根据所述来源ip可以用于获取消息生成装置所在的ip地址。

所述第二消息客户端102,用于向所述配置中心发送获取与所述消息对应的主题信息的请求;接收所述配置中心返回的与所述消息对应的主题信息;根据所述主题信息确定与所述主题信息对应的消息中间件;向所述消息中间件发送获取所述消息的请求;接收所述消息中间件返回的消息。

在本发明实施例中,所述第二消息客户端为消息接收客户端,用于接收所述消息中间件的消息。

可以理解,现有的消息客户端同时具有消息发送和消息接收的功能,因此,在本发明实施例中,所述第一消息客户端与第二消息客户端仅仅以功能作为区别,而不以具体的消息客户端作为区别,对于两条信息a和b来说,同一个消息客户端可能在所述消息a和b中分别表示为第一消息客户端和第二消息客户端。

作为本发明的另一个实施例,所述第二消息客户端还用于在发送获取所述消息的请求前启动接收监控线程,所述接收监控线程用于监控并获取所述消息在接收过程中的轨迹,根据所述轨迹生成接收日志文件,同样的,所述日志文件保存在本地文件夹/opt/logs下面。

在本发明实施例中,通过启动接收监控线程能够实时跟踪消息接收的轨迹,并输出日志文件,便于后续相关人员进行分析。

作为本发明的又一个实施例,在所述第一消息客户端将所述消息与所述消息的标识信息封包生成消息体时,所述第二消息客户段还用于接收所述消息中间件返回的消息体,并对所述消息体进行解包,获取所述待接收消息。

作为本发明的又一个实施例,进一步的,所述第二消息客户端对所述消息体解包后获取所述消息的标识信息,并根据所述标识信息确定并验证所述消息的准确性。

所述配置中心103,用于接收所述第一消息客户端发送的与所述消息对应的主题信息的请求,并向所述第一消息客户端返回与所述消息对应的主题信息;用于接收所述第二消息客户端发送的与所述消息对应的主题信息的请求,并向所述第二消息客户端返回与所述消息对应的主题信息。

在本发明实施例中,在所述配置中心中预先存储与所述消息对应的主题信息,所述主题信息作为参数保存在配置中心中。

作为本发明的一个实施例,选用apollo软件作为配置中心,所述apollo软件为开源软件,可以直接获取。

所述消息中间件104,用于接收所述第一消息客户端发送的消息;接收所述第二消息客户端发送的获取所述消息的请求,并向所述第二消息客户端返回所述消息。

在本发明实施例中,所述消息中间件有多个,所述消息中间件包括kafka、rabbitmq、rocketmq等。

本发明实施例提供的消息处理系统,通过在配置中心中预先存储有与消息对应的主题信息,在消息客户端发送消息前,从配置中心获取与所述消息对应的主题信息,并根据所述主题信息确定消息中间件,实现了消息客户端与多个消息中间件相连的功能,在某一消息中间件崩溃时,能够动态切换到其他消息中间件,此外,通过判断所述消息是否发送成功,在判断所述消息未发送成功时,将消息暂存,便于后续相关人员进行查询,并通过定时任务或者其他任务类型自动返回到发送的步骤,将所述消息重新进行发送。

图2为本发明实施例提供的第一消息客户端的结构示意图,为了便于说明,仅示出与实施例相关的部分。

在本发明实施例中,所述第一消息客户端包括:

消息主题信息获取请求第一发送单元201,用于向所述配置中心发送获取与待发送的消息对应的主题信息的请求。

消息主题信息第一接收单元202,用于接收所述配置中心返回的与所述待发送的消息对应的主题信息。

在本发明实施例中,在发送消息前,从配置中心获取与所述消息对应的主题信息。

消息中间件第一确认单元203,用于根据所述主题信息确定与所述主题信息对应的消息中间件。

在本发明实施例中,所述第一消息发送客户端与多个消息中间件连接,并通过所述消息对应的主体信息确认与所述消息对应的消息中间件。

消息发送单元204,用于向所述消息中间件发送所述消息。

消息确认单元205,用于判断所述消息是否发送成功。

在本发明实施例中,在确认所述消息发送成功时,消息发送流程结束,进一步的,还可以将所述消息暂存。

消息补偿单元206,用于当判断所述消息未成功发送时,暂存所述消息,并根据预设的规则返回至所述向所述消息中间件发送所述消息的步骤。

在本发明实施例中,所述预设的规则可以是通过定时任务定时的返回至所述发送消息的步骤,也可以是通过条件任务在满足一定条件下返回至所述发送消息的步骤。

作为本发明的一个实施例,所述消息暂存在本地文件夹的/opt/data目录下。

图3为本发明实施例提供的第二消息客户端的结构示意图,为了便于说明,仅示出与本发明实施例相关的部分。

在本发明实施例中,所述第二消息客户端包括:

消息主题信息获取请求第二发送单元301,用于向所述配置中心发送获取与所述消息对应的主题信息的请求。

消息主题信息第二接收单元302,接收所述配置中心返回的与所述消息对应的主题信息。

在本发明实施例中,在接收信息前,从配置中心获取与所述信息对应的主题信息。

消息中间件第二确认单元303,用于根据所述主题信息确定与所述主题信息对应的消息中间件。

消息获取请求发送单元304,用于向所述消息中间件发送获取所述消息的请求。

消息接收单元305,用于接收所述消息中间件返回的消息。

图4为本发明实施例提供的消息处理方法的流程图,详述如下。

在本发明实施例中,所述消息处理方法包括消息发送方法(图a)和消息接收方法(图b)。

所述消息发送方法的步骤具体包括:

步骤401a,向配置中心发送获取与待发送的消息对应的主题信息的请求。

步骤402a,接收所述配置中心返回的与所述待发送的消息对应的主题信息。

在本发明实施例中,在发送消息前,从配置中心获取与所述消息对应的主题信息。

步骤403a,根据所述主题信息确定与所述主题信息对应的消息中间件。

在本发明实施例中,所述第一消息发送客户端与多个消息中间件连接,并通过所述消息对应的主体信息确认与所述消息对应的消息中间件。

步骤404a,向所述消息中间件发送所述消息。

步骤405a,判断所述消息是否发送成功。

步骤406a,当判断所述消息未成功发送时,暂存所述消息,并根据预设的规则返回至所述向所述消息中间件发送所述消息的步骤。

在本发明实施例中,所述预设的规则可以是通过定时任务定时的返回至所述发送消息的步骤,也可以是通过条件任务在满足一定条件下返回至所述发送消息的步骤。

作为本发明的一个实施例,所述消息暂存在本地文件夹的/opt/data目录下。

在本发明实施例中,所述消息发送方法应用于第一消息客户端。

所述消息接收方法的步骤具体包括:

步骤401b,向所述配置中心发送获取与所述消息对应的主题信息的请求。

步骤402b,接收所述配置中心返回的与所述消息对应的主题信息。

在本发明实施例中,在接收信息前,从配置中心获取与所述信息对应的主题信息。

步骤403b,根据所述主题信息确定与所述主题信息对应的消息中间件。

步骤404b,向所述消息中间件发送获取所述消息的请求。

步骤405b,接收所述消息中间件返回的消息。

在本发明实施例中,所述消息发送方法应用于第二消息客户端。

图5为本发明另一种实施例提供的消息处理方法的流程图,详述如下。

在本发明实施例中,为了便于说明,仅对与图4不同的地方进行补充说明。

同样的,在本发明实施例中,所述消息处理方法包括消息发送方法(图a)和消息接收方法(图b)。

所述消息发送方法的步骤具体包括:

步骤501a,向配置中心发送获取与待发送的消息对应的主题信息的请求。

步骤502a,接收所述配置中心返回的与所述待发送的消息对应的主题信息。

步骤503a,根据所述主题信息确定与所述主题信息对应的消息中间件。

步骤504a,启动发送监控线程。

在本发明实施例中,所述发送监控线程用于监控并获取所述消息的第一轨迹,并根据所述第一轨迹生成发送日志文件,进一步的,所述日志文件保存在本地文件夹/opt/logs下面。

在本发明实施例中,通过启动发送监控线程能够实时跟踪消息发送的轨迹,并输出日志文件,便于后续相关人员进行分析。

步骤505a,向所述消息中间件发送所述消息。

步骤506a,判断所述消息是否发送成功。

步骤507a,当判断所述消息未成功发送时,暂存所述消息,并根据预设的规则返回至所述向所述消息中间件发送所述消息的步骤。

所述消息接收方法的步骤具体包括:

步骤501b,向所述配置中心发送获取与所述消息对应的主题信息的请求。

步骤502b,接收所述配置中心返回的与所述消息对应的主题信息。

步骤503b,根据所述主题信息确定与所述主题信息对应的消息中间件。

步骤504b,启动接收监控线程。

作为本发明的另一个实施例,所述第二消息客户端还用于在发送获取所述消息的请求前启动接收监控线程,所述接收监控线程用于监控并获取所述消息在接收过程中的轨迹,根据所述轨迹生成接收日志文件,同样的,所述日志文件保存在本地文件夹/opt/logs下面。

在本发明实施例中,通过启动接收监控线程能够实时跟踪消息接收的轨迹,并输出日志文件,便于后续相关人员进行分析。

步骤505b,向所述消息中间件发送获取所述消息的请求。

步骤506b,接收所述消息中间件返回的消息。

图6为本发明又一种实施例提供的消息处理方法的流程图,详述如下。

在本发明实施例中,为了便于说明,仅对与图4不同的地方进行补充说明。

同样的,在本发明实施例中,所述消息处理方法包括消息发送方法(图a)和消息接收方法(图b)。

所述消息发送方法的步骤具体包括:

步骤601a,向配置中心发送获取与待发送的消息对应的主题信息的请求。

步骤602a,接收所述配置中心返回的与所述待发送的消息对应的主题信息。

步骤603a,根据所述主题信息确定与所述主题信息对应的消息中间件。

步骤604a,将所述消息以及所述消息的标识信息封包生成消息体。

在本发明实施例中,所述标识信息包括时间戳、uuid(universallyuniqueidentifier,通用唯一识别码)以及来源ip等字段。

作为本发明的又一个实施例,根据所述时间戳可以用于获取消息生成的时间信息,根据所述uuid可以用于获取消息生成装置的信息,根据所述来源ip可以用于获取消息生成装置所在的ip地址。

步骤605a,向所述消息中间件发送所述消息体。

步骤606a,判断所述消息体是否发送成功。

步骤607a,当判断所述消息体未成功发送时,暂存所述消息体,并根据预设的规则返回至所述向所述消息中间件发送所述消息体的步骤。

所述消息接收方法的步骤具体包括:

步骤601b,向所述配置中心发送获取与所述消息对应的主题信息的请求。

步骤602b,接收所述配置中心返回的与所述消息对应的主题信息。

步骤603b,根据所述主题信息确定与所述主题信息对应的消息中间件。

步骤604b,向所述消息中间件发送获取所述消息的请求。

步骤605b,接收所述消息中间件返回的消息体,并对所述消息体进行解包,获取所述消息。

在本发明实施例中,进一步的,对所述消息体解包后,还可以获取所述消息的标识信息,并根据所述标识信息确定并验证所述消息的准确性。

本发明实施例提供的消息处理系统,通过在配置中心中预先存储有与消息对应的主题信息,在消息客户端发送消息前,从配置中心获取与所述消息对应的主题信息,并根据所述主题信息确定消息中间件,实现了消息客户端与多个消息中间件相连的功能,在某一消息中间件崩溃时,能够动态切换到其他消息中间件,此外,通过判断所述消息是否发送成功,在判断所述消息未发送成功时,将消息暂存,便于后续相关人员进行查询,并通过定时任务或者其他任务类型自动返回到发送的步骤,将所述消息重新进行发送。

本发明实施例提供一种计算机装置,该计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现上述图4至图6所示出的实施例所提供的消息处理方法的步骤。

示例性的,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。例如,计算机程序可以被分割成上述各个方法实施例提供的消息处理方法的步骤。

本领域技术人员可以理解,上述计算机装置的描述仅仅是示例,并不构成对计算机装置的限定,可以包括比上述描述更多或更少的部件,或者组合某些部件,或者不同的部件,例如可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

所述计算机装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信号以及软件分发介质等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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