一种多租户消息事件处理系统、方法及相关装置与流程

文档序号:36322736发布日期:2023-12-09 03:09阅读:56来源:国知局
一种多租户消息事件处理系统的制作方法

本发明涉及数据处理,尤其涉及一种多租户消息事件处理系统、方法及相关装置。


背景技术:

1、在云原生的、多租户的系统架构中,可以指定某个消费者仅处理某租户的数据。在这种场景下,对消息的分发也提出了新的需求,要求消息也能依据租户进行定向的分发。消息中间件rabbitmq所支持的3类5种消息模型中,稍微贴近该需求的是路由模式。在该模式下,可以将每个租户标识作为路由绑定到交换机上,再根据租户与业务创建不同的消息队列,某租户的消费者绑定到本租户的所有业务消息队列来实现定向消息的读取。但这种处理方式,有两个缺点:

2、假如租户数是n,业务队列数m,我们需要在rabbitmq上配置n个路由,n*m个队列。前期的运维工作较多。

3、当租户数增长1个,就需要再配置1个路由,m个队列;当业务队列新增1个,就需要再配置n个路由。随着租户数和业务队列的增加,运维工作会变得越来越复杂,甚至到无法维护的程度。


技术实现思路

1、有鉴于此,本发明提供了一种多租户消息事件处理系统、方法及相关装置,用以解决现有技术中随着租户数和业务队列的增加,运维工作会变得越来越复杂,甚至到无法维护的程度的问题。具体方案如下:

2、一种多租户消息事件处理系统,所述系统包括:生产者、消息代理服务和消费者,所述生产者至少为一个,所述消费者至少为一个,预先令生产者和消费者在消息代理服务上完成注册,预先配置消息队列、目标租户和消费者的第一关联关系和消息队列、bean和方法的第二关联关系,所述消费者中包含至少一个bean,其中,

3、所述生产者用于将所述目标租户的消息发送给消息代理服务,其中,所述消息包括:目标消息实体、所述目标租户id和目标消息队列;

4、所述消息代理服务用于接收所述消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者,并将所述消息封装为消息体,将所述消息体基于rpc发送给所述目标消费者;

5、所述目标消费者用于接收所述消息体,并解析所述消息体得到所述消息,获取所述消息中的目标消息队列,基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述目标消息实体作为业务参数传入。

6、上述的系统,可选的,所述生产者用于将所述目标租户的消息发送给消息代理服务,包括:

7、获取所述消息代理服务的服务器名称,基于所述服务器名称确定第一目标ip地址,将所述消息发送给所述第一目标ip地址;

8、或,

9、获取rabbitmq的第二目标ip地址,端口和登录口令,基于所述第二目标ip地址、所述端口号和所述登录口令连接到所述rabbitmq;

10、将所述消息发送给所述第二目标ip地址,将所述第一目标ip地址与所述第二目标ip地址建立连接关系并设置监听队列;

11、将所述消息基于所述监听队列发送给所述第一目标ip地址。

12、上述的系统,可选的,预先令生产者和消费者在所述消息代理服务上完成注册,包括:

13、针对所述生产者,在对应的注册中心类型下,依据所述注册中心的地址连接到所述注册中心,获取所述注册中心中所述消息代理服务的第一目标ip地址,基于rpc向所述第一目标ip地址发送注册请求,所述消息代理服务接收所述注册请求,依据与所述注册请求相关联的生产者信息建立生产者列表,其中,所述生产者信息包括:服务名称、服务类型、ip地址和所属租户;

14、针对所述消费者,在对应的注册中心类型下,依据所述注册中心的地址连接到所述注册中心,获取所述注册中心中所述消息代理服务的第一目标ip地址,基于rpc向所述第一目标ip地址发送注册请求,所述消息代理服务接收所述注册请求,依据与所述注册请求相关联的消费者信息建立消费者列表,其中,所述消费者信息包括:服务名称、服务类型、ip地址和所属租户。

15、上述的系统,可选的,还包括:

16、所述消息代理服务每间隔预设时长向所述生产者列表和所述消费者列表中的服务发送心跳请求,若检测到对应的服务网络连接异常,删除连接异常的服务,并对相关列表进行更新。

17、一种多租户消息事件处理方法,应用于消息代理服务,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、目标租户和微服务的第一关联关系,所述方法包括:

18、接收目标租户发送的消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者;

19、将所述消息封装为消息体,将所述消息体基于rpc发送给所述目标消费者。

20、一种多租户消息事件处理方法,应用于消费者,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、bean和方法的第二关联关系,所述方法包括:

21、接收消息代理服务发送的消息体,并解析所述消息体得到消息,其中,所述消息包括:目标消息实体、所述目标租户id和目标消息队列;

22、基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述消息实体作为业务参数传入。

23、上述的方法,可选的,还包括:

24、若接收到所述目标消费者发送的消息接收失败的指令后,重新对所述消息进行封装,重新将封装后的消息发送给所述消费者。

25、一种多租户消息事件处理装置,应用于消息代理服务,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、目标租户和微服务的第一关联关系,所述装置包括:

26、接收和确定模块,用于接收目标租户发送的消息,基于所述第一关联关系确定与所述目标租户对应的目标消费者;

27、第一封装和发送模块,用于将所述消息封装为消息体,将所述消息体基于rpc发送给所述目标消费者。

28、一种多租户消息事件处理装置,应用于消费者,预先令生产者和消费者在所述消息代理服务上完成注册,预先配置消息队列、bean和方法的第二关联关系,所述装置包括:

29、接收和解析模块,用于接收消息代理服务发送的消息体,并解析所述消息体得到消息,其中,所述消息包括:目标消息实体、所述目标租户id和目标消息队列;

30、确定和发送模块,用于基于所述第二关联关系确定与所述目标消息队列对应的目标bean和所述目标bean对应的目标方法,基于所述目标方法将所述消息实体作为业务参数传入。

31、上述的装置,可选的,还包括:

32、第二封装和发送模块,用于若接收到所述目标消费者发送的消息接收失败的指令后,重新对所述消息进行封装,重新将封装后的消息发送给所述消费者。

33、与现有技术相比,本发明包括以下优点:

34、本发明公开了一种多租户消息事件处理系统、方法及相关装置,生产者用于将所述目标租户的消息发送给消息代理服务,消息代理服务用于接收消息,确定与目标租户对应的目标消费者,并将消息封装为消息体,将消息体基于rpc发送给目标消费者;目标消费者用于接收消息体,并解析消息体得到消息,获取消息中的目标消息队列,确定与消息队列对应的目标bean和bean对应的目标方法,基于方法将消息实体作为业务参数传入。上述过程,基于消息代理服务对高并发消息自动接收,确定与消息中目标租户对应的目标消费者,再使用rpc定向发送消息,避免了随着租户数和业务队列的增加,运维工作会变得越来越复杂,甚至到无法维护的程度的问题。

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