一种消息队列的消息转发方法及设备与流程

文档序号:21847640发布日期:2020-08-14 17:14阅读:270来源:国知局
一种消息队列的消息转发方法及设备与流程

本申请涉及计算机领域,尤其涉及一种消息队列的消息转发方法及设备。



背景技术:

在服务端开发过程中,如果对消息队列(mq)消息处理进行逻辑变更,可以使用以下方式进行处理:开启预发环境的mq消费或将mq消息的线上服务限制消费,所有的mq消费都经过预发环境处理。但通过限制消费的方式升级mq处理有以下缺点:逻辑变更在预发未经过验证,直接全部接管线上mq处理会有失败的风险;预发环境一般不太稳定,比如服务器的配置和数量较少,容易造成mq积压等问题;mq限制消费增加维护成本和风险,如需要手动操作,完成后需要及时切换回去。



技术实现要素:

本申请的一个目的是提供一种消息队列的消息转发方法及设备,解决现有技术中mq的处理的逻辑需要限制某些服务器的消费的问题。

根据本申请的一个方面,提供了一种消息队列的消息转发方法,该方法包括:

对消息队列中的所有消息进行解析匹配,将满足转发条件的目标消息转发至预发环境中的目标消息接收器上;

将所述消息接收器上的目标消息进行参数还原,得到本地服务调用的参数;

通过预发布实例执行所述本地服务调用的参数,并将执行结果返回给线上实例的消息执行器,其中,所述预发布实例在所述预发环境中。

进一步地,对消息队列中的所有消息进行解析匹配,将满足转发条件的目标消息转发至预发环境中的目标消息接收器上,包括:

在消息执行器上对消息队列中的所有消息进行数据结构的解析,根据解析结果及配置条件过滤消息的数据结构中的内容,得到过滤后的消息;

在消息执行器上根据下发的配置规则判断所过滤后的消息是否满足转发条件,若是,则为目标消息,将所述目标消息转发至预发环境中的目标消息接收器上。

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

根据ducc配置管理下发配置规则,其中,所述配置规则包括消息被转发到的ip地址及转发的过滤条件。

进一步地,在消息执行器上根据下发的配置规则判断所过滤后的消息是否满足转发条件之后,包括:

若所述消息被转发到的ip地址为空或所述转发的过滤条件为空,则所述消息执行器停止将所述过滤后的消息转发至预发环境中的目标消息接收器上。

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

若解析匹配过程中发生http异常或所述预发布实例执行异常,则在线上抛出异常信息。

进一步地,将满足转发条件的目标消息转发至预发环境中的目标消息接收器上,包括:

将满足转发条件的目标消息通过预发提供的http接口转发至预发环境中的目标消息接收器上,其中,所述预发提供的http接口在线上环境时处于关闭状态。

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

根据ducc配置管理内的配置规则的更新将最新配置下发至所有预发布实例及线上实例。

根据本申请一个方面,还提供一种消息队列的消息转发的设备,该设备包括:

匹配装置,用于对消息队列中的所有消息进行解析匹配,将满足转发条件的目标消息转发至预发环境中的目标消息接收器上;

还原装置,用于将所述消息接收器上的目标消息进行参数还原,得到本地服务调用的参数;

返回装置,用于通过预发布实例执行所述本地服务调用的参数,并将执行结果返回给线上实例的消息执行器,其中,所述预发布实例在所述预发环境中。

根据本申请又一个方面,还提供一种消息队列的消息转发的设备,所述设备包括:

一个或多个处理器;以及

存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述所述方法的操作。

根据本申请再一个方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述所述的方法。

与现有技术相比,本申请通过对消息队列中的所有消息进行解析匹配,将满足转发条件的目标消息转发至预发环境中的目标消息接收器上;将所述消息接收器上的目标消息进行参数还原,得到本地服务调用的参数;通过预发布实例执行所述本地服务调用的参数,并将执行结果返回给线上实例的消息执行器,其中,所述预发布实例在所述预发环境中。从而消息队列的消息处理的逻辑升级不再需要限制某些服务器的消费,能够对消息队列消息进行过滤,从而针对性的不影响全部的消息处理。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请的一个方面提供的一种消息队列的消息转发方法的流程示意图;

图2示出本申请一具体实施例中的mq消息转发的系统框架示意图;

图3示出本申请又一个方面提供的一种消息队列的消息转发的设备的结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(例如中央处理器(centralprocessingunit,cpu))、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(randomaccessmemory,ram)和/或非易失性内存等形式,如只读存储器(readonlymemory,rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(phase-changeram,pram)、静态随机存取存储器(staticrandomaccessmemory,sram)、动态随机存取存储器(dynamicrandomaccessmemory,dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(compactdiscread-onlymemory,cd-rom)、数字多功能光盘(digitalversatiledisk,dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

图1示出根据本申请的一个方面提供的一种消息队列的消息转发方法的流程示意图,该方法包括:步骤s11~步骤s13,

在步骤s11中,对消息队列中的所有消息进行解析匹配,将满足转发条件的目标消息转发至预发环境中的目标消息接收器上;在此,可以通过引入隔离转发框架jar包,在对应消息任务/消息中间件系统(比如worker/jmq)上消息队列中的每条消息通过解析匹配,将满足转发条件的消息作为目标消息交给预发环境处理的方式,从而解决任务消息开发测试问题。其中,目标接收器用于接收被匹配需要在预发环境执行的消息。

在步骤s12中,将所述消息接收器上的目标消息进行参数还原,得到本地服务调用的参数;在此,对接收到的目标消息进行参数的还原,还原为本地服务调用的参数,从而使得本地实例执行时可调用还原后的参数。

在步骤s13中,通过预发布实例执行所述本地服务调用的参数,并将执行结果返回至线上实例的消息执行器,其中,所述预发布实例在所述预发环境中。在此,预发布实例为上线前联调测试所用的实例,线上实例为线上负责处理用户请求和消息的服务器实例;在预发环境中通过预发布实例执行上述被还原为本地服务调用的参数,并将预发布实例执行的结果返回至线上实例的消息执行器,通过线上的消息执行器继续执行。从而使得mq的处理的逻辑升级不再需要限制某些服务器的消费。

在本申请一实施例中,在步骤s11中,在消息执行器上对消息队列中的所有消息进行数据结构的解析,根据解析结果及配置条件过滤消息的数据结构中的内容,得到过滤后的消息;在消息执行器上根据下发的配置规则判断所过滤后的消息是否满足转发条件,若是,则为目标消息,将所述目标消息转发至预发环境中的目标消息接收器上。在此,mq消息具有固定的数据结构,消息执行器对mq的数据结构进行解析,根据解析结果及配置条件判断具体的要拦截数据结构中的哪些内容。例如,某mq消息的数据结构包含a、b、c三个字段,对该数据结构进行解析后,解析出字段的值,消息执行器根据这些字段的值判断具体要拦截哪个消息。进行过滤时,可以先用springaop拦截目标方法,再用支持表达式匹配的配置条件进行匹配,比如a>0&&b==0等,匹配通过会执行转发动作。可以过滤mq消息,从而有针对性的不影响全部的消息处理。

在本申请一实施例中,所述方法包括:根据ducc配置管理下发配置规则,其中,所述配置规则包括消息被转发到的ip地址及转发的过滤条件。在此,ducc为配置下发的组件,具有一个管理端,可以做配置管理,依靠ducc动态下发的配置包括转发到的ip地址和转发过滤条件。目标接收器为用ducc配置(配置的ip地址)的预发实例上的消息接收器。使用ducc配置管理进行下发配置的规则,以调整数据过滤效果,并通过动态的下发配置,不再限制消费。

接上述实施例,根据ducc配置管理内的配置规则的更新将最新配置下发至所有预发布实例及线上实例。在此,ducc配置规则配置变更后,所有实例会收到最新配置,所有实例包括所有预发布实例及所有线上实例,消息mq的匹配条件和转发ip地址也会更新。其中,若所述消息被转发到的ip地址为空或所述转发的过滤条件为空,则所述消息执行器停止将所述过滤后的消息转发至预发环境中的目标消息接收器上。在此,如果转发ip地址或者转发过滤条件是空的,则消息执行器不会执行转发动作。

在本申请一实施例中,在步骤s11中,若解析匹配过程中发生http异常或所述预发布实例执行异常,则在线上抛出异常信息。在此,消息执行器用于过滤需要被转发的预发环境执行的消息,若被匹配将会发送到目标消息接收器,若处理发生http异常或预发布实例执行异常,则将会在线上抛出异常。

在本申请一实施例中,在步骤s11中,将满足转发条件的目标消息通过预发提供的http接口转发至预发环境中的目标消息接收器上,其中,所述预发提供的http接口在线上环境时处于关闭状态。在此,消息接收器用于接收被匹配需要在预发环境执行的消息,消息接收器在预发提供暂定的http接口,在预发环境中对mq消息的处理结果返回至线上实例,而线上实例不用接收http转发请求的,在线上环境时关闭该暂定的http接口,预发环境是跟线上用户隔离的,从而提高数据的安全性。

图2示出本申请一具体实施例中的mq消息转发的系统框架示意图,该系统包括预发环境、接收预发环境的执行结果的线上环境以及其他线上实例,其中,线上环境和预发环境中均包括消息接收器和消息执行器,从而以供线上实例和预发布实例使用,预发实例不能直接接收到mq消息,通过线上环境的实例的消息接收器先收到消息,判断是否需要被其他实例处理,若满足需要被预发环境处理的条件,则将该消息进行过滤后发送至预发环境中,通过线上环境的消息执行器进行过滤匹配,过滤匹配可以用java反射原理,过滤得到需要被转发的预发环境执行的消息。预发实例的消息接收器接收到消息后将参数还原成本地服务调用的参数,执行结果返回给线上实例的消息执行器,线上实例继续正常执行后续的函数调用。该系统还包括日志组件,通过日志组件对消息执行器的执行结果进行日志存储,从而方便后续的查询,了解所有实例的执行情况。预发布实例收到消息会在执行本地服务处理,该服务处理为本次升级的功能,例如,在现有消息处理中增加订单发货给用户发送提示短信功能,当前线上实例处理订单发货不会发短信,上线前联调可以把预发实例先部署,联调测试该功能通过后再部署线上实例。在预发环境和线上环境中均包括ducc配置管理,从而动态下发配置规则,当配置规则更新时,所有线上实例和所有预发布实例的配置均会更新。该系统通过线上服务和预发服务同时接入,通过命中规则逻辑实现消息转发到预发处理后,将处理结果返回给线上继续处理,其中,命中规则逻辑为转发ip地址和转发过滤条件的配置。

根据本申请再一个方面,还提供了一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如前述所述的一种消息队列的消息转发方法。

与上文所述的方法相对应的,本申请还提供一种终端,其包括能够执行上述图1或图2或各个实施例所述的方法步骤的模块或单元,这些模块或单元可以通过硬件、软件或软硬结合的方式来实现,本申请并不限定。例如,在本申请一实施例中,还提供了一种消息队列的消息转发的设备,所述设备包括:

一个或多个处理器;以及

存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述所述方法的操作。

例如,计算机可读指令在被执行时使所述一个或多个处理器:

对消息队列中的所有消息进行解析匹配,将满足转发条件的目标消息转发至预发环境中的目标消息接收器上;

将所述消息接收器上的目标消息进行参数还原,得到本地服务调用的参数;

通过预发布实例执行所述本地服务调用的参数,并将执行结果返回给线上实例的消息执行器,其中,所述预发布实例在所述预发环境中。

图3示出本申请又一个方面提供的一种消息队列的消息转发的设备的结构示意图,该设备包括:匹配装置11、还原装置12及返回装置13,其中,匹配装置11用于对消息队列中的所有消息进行解析匹配,将满足转发条件的目标消息转发至预发环境中的目标消息接收器上;还原装置12用于将所述消息接收器上的目标消息进行参数还原,得到本地服务调用的参数;返回装置13用于通过预发布实例执行所述本地服务调用的参数,并将执行结果返回给线上实例的消息执行器,其中,所述预发布实例在所述预发环境中。

需要说明的是,匹配装置11、还原装置12及返回装置13执行的内容分别与上述步骤s11、s12和s13中的内容相同或相应相同,为简明起见,在此不再赘述。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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