一种多租户消息事件处理系统、方法及相关装置
文献发布时间:2024-04-18 19:58:26
技术领域
本发明涉及数据处理技术领域,尤其涉及一种多租户消息事件处理系统、方法及相关装置。
背景技术
在云原生的、多租户的系统架构中,可以指定某个消费者仅处理某租户的数据。在这种场景下,对消息的分发也提出了新的需求,要求消息也能依据租户进行定向的分发。消息中间件RabbitMQ所支持的3类5种消息模型中,稍微贴近该需求的是路由模式。在该模式下,可以将每个租户标识作为路由绑定到交换机上,再根据租户与业务创建不同的消息队列,某租户的消费者绑定到本租户的所有业务消息队列来实现定向消息的读取。但这种处理方式,有两个缺点:
假如租户数是N,业务队列数M,我们需要在RabbitMQ上配置N个路由,N*M个队列。前期的运维工作较多。
当租户数增长1个,就需要再配置1个路由,M个队列;当业务队列新增1个,就需要再配置N个路由。随着租户数和业务队列的增加,运维工作会变得越来越复杂,甚至到无法维护的程度。
发明内容
有鉴于此,本发明提供了一种多租户消息事件处理系统、方法及相关装置,用以解决现有技术中随着租户数和业务队列的增加,运维工作会变得越来越复杂,甚至到无法维护的程度的问题。具体方案如下:
一种多租户消息事件处理系统,所述系统包括:生产者、消息代理服务和消费者,所述生产者至少为一个,所述消费者至少为一个,预先令生产者和消费者在消息代理服务上完成注册,预先配置消息队列、目标租户和消费者的第一关联关系和消息队列、bean和方法的第二关联关系,所述消费者中包含至少一个bean,其中,
所述生产者用于将所述目标租户的消息发送给消息代理服务,其中,所述消息包括:目标消息实体、所述目标租户ID和目标消息队列;
所述消息代理服务用于接收所述消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者,并将所述消息封装为消息体,将所述消息体基于RPC发送给所述目标消费者;
所述目标消费者用于接收所述消息体,并解析所述消息体得到所述消息,获取所述消息中的目标消息队列,基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述目标消息实体作为业务参数传入。
上述的系统,可选的,所述生产者用于将所述目标租户的消息发送给消息代理服务,包括:
获取所述消息代理服务的服务器名称,基于所述服务器名称确定第一目标IP地址,将所述消息发送给所述第一目标IP地址;
或,
获取RabbitMQ的第二目标IP地址,端口和登录口令,基于所述第二目标IP地址、所述端口号和所述登录口令连接到所述RabbitMQ;
将所述消息发送给所述第二目标IP地址,将所述第一目标IP地址与所述第二目标IP地址建立连接关系并设置监听队列;
将所述消息基于所述监听队列发送给所述第一目标IP地址。
上述的系统,可选的,预先令生产者和消费者在所述消息代理服务上完成注册,包括:
针对所述生产者,在对应的注册中心类型下,依据所述注册中心的地址连接到所述注册中心,获取所述注册中心中所述消息代理服务的第一目标IP地址,基于RPC向所述第一目标IP地址发送注册请求,所述消息代理服务接收所述注册请求,依据与所述注册请求相关联的生产者信息建立生产者列表,其中,所述生产者信息包括:服务名称、服务类型、IP地址和所属租户;
针对所述消费者,在对应的注册中心类型下,依据所述注册中心的地址连接到所述注册中心,获取所述注册中心中所述消息代理服务的第一目标IP地址,基于RPC向所述第一目标IP地址发送注册请求,所述消息代理服务接收所述注册请求,依据与所述注册请求相关联的消费者信息建立消费者列表,其中,所述消费者信息包括:服务名称、服务类型、IP地址和所属租户。
上述的系统,可选的,还包括:
所述消息代理服务每间隔预设时长向所述生产者列表和所述消费者列表中的服务发送心跳请求,若检测到对应的服务网络连接异常,删除连接异常的服务,并对相关列表进行更新。
一种多租户消息事件处理方法,应用于消息代理服务,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、目标租户和微服务的第一关联关系,所述方法包括:
接收目标租户发送的消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者;
将所述消息封装为消息体,将所述消息体基于RPC发送给所述目标消费者。
一种多租户消息事件处理方法,应用于消费者,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、bean和方法的第二关联关系,所述方法包括:
接收消息代理服务发送的消息体,并解析所述消息体得到消息,其中,所述消息包括:目标消息实体、所述目标租户ID和目标消息队列;
基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述消息实体作为业务参数传入。
上述的方法,可选的,还包括:
若接收到所述目标消费者发送的消息接收失败的指令后,重新对所述消息进行封装,重新将封装后的消息发送给所述消费者。
一种多租户消息事件处理装置,应用于消息代理服务,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、目标租户和微服务的第一关联关系,所述装置包括:
接收和确定模块,用于接收目标租户发送的消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者;
第一封装和发送模块,用于将所述消息封装为消息体,将所述消息体基于RPC发送给所述目标消费者。
一种多租户消息事件处理装置,应用于消费者,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、bean和方法的第二关联关系,所述装置包括:
接收和解析模块,用于接收消息代理服务发送的消息体,并解析所述消息体得到消息,其中,所述消息包括:目标消息实体、所述目标租户ID和目标消息队列;
确定和发送模块,用于基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述消息实体作为业务参数传入。
上述的装置,可选的,还包括:
第二封装和发送模块,用于若接收到所述目标消费者发送的消息接收失败的指令后,重新对所述消息进行封装,重新将封装后的消息发送给所述消费者。
与现有技术相比,本发明包括以下优点:
本发明公开了一种多租户消息事件处理系统、方法及相关装置,生产者用于将所述目标租户的消息发送给消息代理服务,消息代理服务用于接收消息,确定与目标租户对应的目标消费者,并将消息封装为消息体,将消息体基于RPC发送给目标消费者;目标消费者用于接收消息体,并解析消息体得到消息,获取消息中的目标消息队列,确定与消息队列对应的目标bean和bean对应的目标方法,基于方法将消息实体作为业务参数传入。上述过程,基于消息代理服务对高并发消息自动接收,确定与消息中目标租户对应的目标消费者,再使用RPC定向发送消息,避免了随着租户数和业务队列的增加,运维工作会变得越来越复杂,甚至到无法维护的程度的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种多租户消息事件处理系统结构框图;
图2为本发明实施例公开的一种多租户消息事件处理系统又一结构框图;
图3为本发明实施例公开的一种多租户消息事件处理方法流程图;
图4为本发明实施例公开的一种多租户消息事件处理方法又一方法流程图;
图5为本发明实施例公开的一种多租户消息事件处理装置结构框图;
图6为本发明实施例公开的一种多租户消息事件处理装置又一结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种多租户消息事件处理系统、方法及相关装置,应用于在分布式环境中,多租户系统架构上,对租户级别消息事件的接收,并按租户进行定向分发处理;本发明基于消息中间件RabbitMQ的通信标准,完成对海量高并发消息的快速读取;基于开源的Netty框架,参照开源的RPC协议,自研简单、高效的RPC(远程方法调用),用于该装置与微服务间的网络通信,实现对海量消息的快速定向分发;另外针对两大注册中心框架Eureka及Nacos,做了兼容性处理,完成自动的服务注册、发现及刷新,使该装置能适用于当前主流的云原生架构系统。
其中,针对自研RPC通信协议,
本发明实施例中,基于开源Netty框架,参照主流RPC协议标准,自研RPC框架,用于系统内部与该装置进行网络通信交互。
自研RPC框架包含可扩展通信协议、数据序列化与反序列化、网络通信模型、消息通道代理以及全局唯一序列这5部分内容。
可扩展通信协议主要是指发送的网络通信消息的数据边界,该边界主要描述了定长消息头的长度,方便消息接收者依据长度来分割定长的消息头和不定长的消息体。
将定长的消息头设计成后期可扩展升级的不定长消息头,方便后续对RPC协议的升级与扩展,并能保障向下兼容。详细设计从[0005]步骤开始,到[0009]结束
可扩展通信协议约定,通信消息体最大为8Mb。
不定长消息头包括长度为16字节的固定部分和长度不固定部分,剩余为消息体内容。
16字节固定部分依次包括2字节的魔术位、1字节的协议版本描述、4字节的消息整体长度、2字节的变长消息头长度、1字节的消息类型、1字节的序列化方式、1字节的压缩方式以及4字节的消息ID。
消息头长度减去16字节固定长度,即为不固定部分的长度。
消息整体长度减去消息头长度,即为消息体长度。
框架基于开源序列化框架Hessian实现数据的序列化和反序列化。
发送方使用序列化方法,将对象参数转成可在网络中传输的二进制数据。
接收方使用反序列化方法,逆向将二进制数据还原成对象参数。
框架使用I/O多路复用模型作为网络通信模型,基于Netty框架实现数据读写的零拷贝,保障网络通信能在高并发环境下稳定进行。
框架基于雪花算法(SnowFlake)实现全局唯一序列生成器,用于作为请求头上的唯一请求ID,保障全局请求不冲突。SnowFlake是Twitter公司采用的一种算法,目的是在分布式系统中产生全局唯一且趋势递增的ID,它在同一毫秒内最多可以生成4194304个全局唯一ID,计算公式:同一毫秒的ID数量=1024X 4096=4194304;每个请求发送前,都会使用生成器,获取一个唯一ID,放在请求头中。
框架提供了自定义注解,注解值为队列名,该注解标记在某方法上,表明当前方法是用于处理对应队列。
服务启动时,基于Spring的BeanPostProcessor实现自定义Bean后置处理器。在启动时,Spring会将所有Bean信息传给自定义后置处理器;在处理器中,遍历所有Bean,通过Java反射工具,获取每个Bean的注解信息,当发现标记有自定义注解时,即可将当前Bean存储在本地缓存中。本地缓存为Key-Value结构的HashMap,存储时,先获取自定义注解中配置的队列信息,以队列信息为Key,Bean为Value,存储到HashMap中。
接收到业务消息后,以消息中携带队列信息作为Key,从本地缓存HashMap中,查询到对应的Bean,来执行具体的业务方法,达到对消息通道代理的目的。
所述处理系统包括:生产者、消息代理服务和消费者,预先令生产者和消费者在消息代理服务上完成注册,本发明实施例实现了生产者对消息代理服务的发现、消费者向消息代理服务注册以及可用消费者实时更新,具体的注册过程如下:
本发明实施例中所述系统兼容了两种主流注册中心:Eureka和Nacos。生产者启动时,根据配置的注册中心类型、注册中心地址连接到对应的注册中心,然后根据默认或配置的代理服务名称从注册中心获取代理服务的第一目标IP地址。
系统内所有服务,无论生产者还是消费者,服务启动成功后均使用RPC,向代理服务发起注册请求,将服务名称、服务类型、IP地址、所属租户等信息告知消息代理服务。
所述消息代理服务接收到注册请求后,上线该服务,相关信息存储在本地缓存中,所述消息代理服务依据服务类型,分别维护着消费者列表和生产者列表。优选的,所述消息代理服务每隔30秒,会轮询向所述消费者列表和所述生产者列表发起心跳请求,当所述消息代理服务与某服务进行网络请求出现网络连接相关异常,则会将该服务视为不可用服务,主动下线该服务,并实时更新对应列表。
进一步的,在完成注册以后,预先配置消息队列、目标租户和消费者的第一关联关系和消息队列、bean和方法的第二关联关系,所述消费者中包含至少一个bean,具体的配置过程如下:
针对所述第一关联关系:所述系统提供专门的功能页面做相关配置,可在页面上配置业务队列,然后点击创建队列按钮,调用后台服务的创建队列接口。后台接口接收到请求,根据配置的业务队列信息,调用RabbitMQ提供的方法,实现消息队列的创建。可在页面上实时获取系统内可用目标租户列表以及消费者,然后根据需求将消息队列与目标租户、消费者进行绑定,得到所述第一关联关系。
针对所述第二关联关系,针对自研RPC通信协议中[0020]和[0021]两部分描述确定的,在此不再赘述。
所述系统的结构框图如图1所示,其中,
所述生产者用于将所述目标租户的消息发送给消息代理服务,其中,所述消息包括:目标消息实体、所述目标租户ID和目标消息队列;
本发明实施例中,所述生产者支持两种发送消息的方式,使用RabbitMQ发送消息以及使用RPC发送消息,具体的示意图如图2所示。
使用RPC发送消息的处理过程如下:
生产者启动时,根据配置的消息代理服务名称,发现所述消息代理服务的第一目标IP地址。
生产者调用框架底层提供的工具类,传入消息实体、目标租户ID、消息队列信息等。
框架底层根据所述消息代理服务的第一目标IP地址,发起RPC连接请求,连接成功后,按约定格式封装好消息内容,然后使用RPC将所述消息发送给所述消息代理服务。
使用RabbitMQ发送消息的处理过程如下:
生产者启动时,根据配置的RabbitMQ中间件的第二目标IP地址、端口、和登录口令,其中,所述登录口令包括:账号和密码,连接到RabbitMQ。生产者调用框架底层提供的工具类,传入消息实体、目标租户ID、和目标消息队列信息等。框架底层根据以上信息,封装成约定好格式的消息内容,然后发送至RabbitMQ.对应的第二目标IP地址,将所述第一目标IP地址与所述第二目标IP地址建立连接关系并设置监听队列,将所述消息基于所述监听队列发送给所述第一目标IP地址。
所述消息代理服务用于接收所述消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者,并将所述消息封装为消息体,将所述消息体基于RPC发送给所述目标消费者;
本发明实施例中,所述消息代理服务也支持RabbitMQ和RPC这两种方式的消息接收与处理。
RPC的消息接收处理过程如下:
所述消息代理服务启动后,会实时监听RPC端口。
生产者通过RPC发送消息后,所述消息代理服务实时读取到消息,并开始处理。处理步骤如下:
接收到消息后,所述消息代理服务根据约定好的格式解析,从中获取消息实体、目标租户ID、目标消息队列等信息。
所述消息代理服务根据目标租户ID,从本地缓存的可用消费者列表中,找到所述目标租户的目标微服务,即目标消费者,获取其IP地址信息。所述消息代理服务根据约定好的格式,将目标消息队列、目标租户ID、消息实体等信息封装成消息体。所述消息代理服务使用RPC向目标消费者发送消息体。
本发明实施例中,基于RabbitMQ的消息接收处理过程如下:
所述消息代理服务启动后,获取所述第一关联关系,所述消息代理服务连接RabbitMQ并监听配置的所有队列。当生产者通过RabbitMQ发送消息后,所述消息代理服务就会从监听的队列中实时接收到消息。接收到消息后,代理服务根据约定好的格式解析,从中获取消息实体、目标租户ID、目标消息队列等信息。
所述消息代理服务根据目标租户ID,从本地缓存的可用消费者列表中,基于所述第一关联关系,找到所述目标租户的目标微服务,即目标消费者,获取其IP地址信息。所述消息代理服务根据约定好的格式,将目标消息队列、目标租户ID、消息实体等信息封装成消息体。所述消息代理服务使用RPC向目标消费者发送消息体。
进一步的,所述消息代理服务使用RPC向目标消费者发送消息时,若消息发送失败后,代理服务会根据该消息的队列信息,重新封装该消息,然后重新发送到RabbitMQ相应队列中。
所述目标消费者用于接收所述消息体,并解析所述消息体得到所述消息,获取所述消息中的目标消息队列,基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述目标消息实体作为业务参数传入。
本发明实施例中,框架提供了自定义注解,注解值为所述目标消息队列名。该注解标记在某方法上,表明当前方法是用于处理对应的消息队列。所述目标消费者启动时,会扫描所有配置了自定义注解的方法,将方法与对应Bean信息所属的类名称存储在本地缓存,即所述第二关联关系,所述目标消费者通过RPC接收所述消息代理服务转发的消息体。所述目标消费者按照RPC协议,解析RPC消息,获取消息实体、目标租户ID、目标消息队列等信息。
所述目标消费者按照接收消息中的目标消息队列,基于所述第二关联系观从本地缓存中获取到对应的方法以及对应Bean信息。所述目标消费者从Spring IOC容器中,获取到实际Bean,然后通过反射的方式,调用该Bean的对应目标方法,将消息实体作为业务参数传入。本发明公开了一种多租户消息事件处理系统、方法及相关装置,生产者用于将所述目标租户的消息发送给消息代理服务,消息代理服务用于接收消息,确定与目标租户对应的目标消费者,并将消息封装为消息体,将消息体基于RPC发送给目标消费者;目标消费者用于接收消息体,并解析消息体得到消息,获取消息中的目标消息队列,确定与消息队列对应的目标bean和bean对应的目标方法,基于方法将消息实体作为业务参数传入。上述过程,基于消息代理服务对高并发消息自动接收,确定与消息中目标租户对应的目标消费者,再使用RPC定向发送消息,避免了随着租户数和业务队列的增加,运维工作会变得越来越复杂,甚至到无法维护的程度的问题。
本发明实施例主要是实现在分布式环境中,多租户系统架构上,对租户级别消息事件的接收,并按租户进行定向分发处理;本发明基于消息中间件RabbitMQ的通信标准,完成对海量高并发消息的快速读取;基于开源的Netty框架,参照开源的RPC协议,自研简单、高效的RPC(远程方法调用),用于该装置与微服务间的网络通信,实现对海量消息的快速定向分发;另外针对两大注册中心框架Eureka及Nacos,做了兼容性处理,完成自动的服务注册、发现及刷新,使该装置能适用于当前主流的云原生架构系统。
本发明公开了一种多租户消息事件处理方法,应用于消息代理服务,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、目标租户和微服务的第一关联关系,所述方法的执行流程如图3所示,包括步骤:
S101、接收目标租户发送的消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者;
本发明实施例中,基于所述目标租户在所述第一关联关系中确定与所述目标租户对应的目标消费者。
S102、将所述消息封装为消息体,将所述消息体基于RPC发送给所述目标消费者。
本发明实施例中,上述步骤的处理过程与所述处理系统中所述消息代理服务处理的过程相同,在此不再赘述。
本发明公开了一种多租户消息事件处理方法,应用于消费者,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、bean和方法的第二关联关系,所述方法的执行流程如图4所示,包括步骤:
S201、接收消息代理服务发送的消息体,并解析所述消息体得到消息,其中,所述消息包括:目标消息实体、所述目标租户ID和目标消息队列;
S202、基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述消息实体作为业务参数传入。
本发明实施例中,上述步骤的具体处理过程与所述处理系统中所述消费者的处理过程相同,在此不再赘述。
基于上述的一种多租户消息事件处理方法,应用于消息代理服务,本发明还提供了一种多租户消息事件处理装置,应用于消息代理服务,所述装置的结构框图如图5所示,包括:
接收和确定模块301和第一封装和发送模块302。
其中,
所述接收和确定模块301,用于接收目标租户发送的消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者;
所述第一封装和发送模块302,用于将所述消息封装为消息体,将所述消息体基于RPC发送给所述目标消费者。
本发明实施例中,所述处理装置还包括:第二封装和发送模块303。
其中,
所述第二封装和发送模块303,用于若接收到所述目标消费者发送的消息接收失败的指令后,重新对所述消息进行封装,重新将封装后的消息发送给所述消费者。
基于上述的一种多租户消息事件处理方法,应用于消费者,本发明还提供了一种多租户消息事件处理装置,应用于消费者,所述装置的结构框图如图6所示,包括:
接收和解析模块401和确定和发送模块402。
其中,
所述接收和解析模块401,用于接收消息代理服务发送的消息体,并解析所述消息体得到消息,其中,所述消息包括:目标消息实体、所述目标租户ID和目标消息队列;
所述确定和发送模块402,用于基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述消息实体作为业务参数传入。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
- 一种多租户的管理员管理方法、装置及其系统
- 一种多租户管理方法及装置
- 消息处理系统、方法及装置
- 一种SOE事件的采集方法及相关装置
- 在事件处理系统中处理业务初始请求消息的事件处理方法
- 网络配置事件通知消息的处理方法、转换装置和处理系统