用于java微服务物联网分布式消息网关的方法技术

技术编号:38908751 阅读:12 留言:0更新日期:2023-09-25 09:27
本发明专利技术公开了一种用于java微服务物联网分布式消息网关的方法,包括以下步骤:步骤1:启动微服务模块;步骤2:创建消息队列和消息监听器;步骤3:消息发送端向消息中间件的服务器发送消息;步骤4:消费端消费消息。本发明专利技术能够解决现有技术中物联网消息处理响应时间长、系统复杂且压力大的问题。统复杂且压力大的问题。统复杂且压力大的问题。

【技术实现步骤摘要】
用于java微服务物联网分布式消息网关的方法


[0001]本专利技术涉及物联网
,尤其涉及一种用于java微服务物联网分布式消息网关的方法。

技术介绍

[0002]物联网连接“万物”,物联网平台不断接收到海量的来自各种物联网感知设备的上报数据,这些数据中所包含的信息需要发送到不同的微服务模块,以便采取进一步的分析处理、决策管理,例如将消息发送给订阅者。目前,微服务模块的消息处理采用哈希表的结构,响应时间长,系统复杂且压力大。因此,需要提供一种用于java微服务物联网分布式消息网关的方法,能够解决现有技术中物联网消息处理响应时间长、系统复杂且压力大的问题。

技术实现思路

[0003]本专利技术的目的在于提供一种用于java微服务物联网分布式消息网关的方法,能够解决现有技术中物联网消息处理响应时间长、系统复杂且压力大的问题。
[0004]本专利技术是这样实现的:
[0005]一种用于java微服务物联网分布式消息网关的方法,包括以下步骤:
[0006]步骤1:启动微服务模块;
[0007]步骤2:创建消息队列和消息监听器;
[0008]步骤3:消息发送端向消息中间件的服务器发送消息;
[0009]步骤4:消费端消费消息。
[0010]所述的步骤1包括以下分步骤:
[0011]步骤1.1:通过springboot启动微服务模块;
[0012]步骤1.2:在微服务模块初始化注册java bean时,通过扫描指定包路径下的所有的class文件,找到class文件中在方法上添加了自定义注解@Subscribe的消息订阅者方法;
[0013]步骤1.3:将所有消息订阅者方法的消息主题topic构建成消息的订阅树,并将消息的订阅树存到redis缓存中心中;
[0014]步骤1.4:将微服务模块的服务实例注册到nacos注册中心中;
[0015]步骤1.5:微服务模块启动成功并运行。
[0016]所述的步骤1.3包括以下分步骤:
[0017]步骤1.3.1:逐个扫描到的消息订阅者方法,并解析消息订阅者方法上自定义注解@Subscribe的属性信息,获取消息订阅者方法的消息主题topic;
[0018]步骤1.3.2:将消息主题topic通过“/”分割成topic数组,从消息订阅树的根节点开始匹配查找,初始查找深度depth=0;
[0019]步骤1.3.3:判断查找深度depth是否等于topic数组的长度,若是,则执行步骤
1.3.4,若否,则执行步骤1.3.5;
[0020]步骤1.3.4:将当前的消息订阅者方法添加到当前节点的订阅方法列表中,转至步骤1.3.9;
[0021]步骤1.3.5:遍历当前节点的下一级节点的列表,判断是否存在节点内容等于消息主题查找深度值topic[depth]的下一级节点,若存在,则执行步骤1.3.6,若不存在,则执行步骤1.3.7;
[0022]步骤1.3.6:将查找到的该下一级节点作为当前节点,转至步骤1.3.8;
[0023]步骤1.3.7:创建新的节点,并将当前的消息主题查找深度值topic[depth]作为新的节点的内容;
[0024]步骤1.3.8:将新的节点添加到当前节点的下一级节点的订阅方法列表中,并将新的节点作为当前节点;
[0025]步骤1.3.9:查找深度depth+1,继续下一轮的匹配查找;
[0026]步骤1.3.10:重复步骤1.3.3至步骤1.3.9,直至完成所有消息订阅者方法的消息主题topic的添加,构建形成消息订阅树。
[0027]所述的步骤2中,根据消息订阅者方法的消息主题topic自动在消息中间件的服务器上自动创建消息的队列。
[0028]所述的步骤2包括以下分步骤:
[0029]步骤2.1:微服务模块引入消息中间件的依赖。
[0030]步骤2.2:微服务模块启动时,自动以微服务模块的服务实例名称在消息中间件的服务器上创建消息的队列queue,以消息主题topic在消息中间件的服务器上创建交换机exchange,并将消息的队列queue与交换机exchange绑定。
[0031]优选的,消息中间件的服务器可采用现有技术的消息中间件的服务器RabbitMQ。
[0032]步骤2.3:自定义消息监听器类,并实现消息监听器的接口,在微服务模块启动时,创建消息监听器容器实例,并将消息的队列queue和自定义的消息监听器类注册到消息监听器容器实例中,即可完成消息监听器的创建、以及消息队列queue和消息监听器的绑定关系。
[0033]在微服务模块运行时,可通过执行代码手动注册消息订阅者,将该消息订阅者方法的消息主题topic添加到消息订阅树中,并更新redis缓存中心,同时在消息中间件的服务器上自动创建相应的消息的队列。
[0034]所述的步骤3包括以下分步骤:
[0035]步骤3.1:从nacos注册中心获取所有已注册的微服务模块。
[0036]步骤3.2:遍历微服务模块,并实时从redis缓存中心拉取微服务模块对应的消息订阅树。
[0037]步骤3.3:根据所发送的消息的消息主题topic,通过消息订阅树快速的匹配到对应的订阅方法列表,遍历订阅方法列表,将消息的内容序列化组装为一个ByteBuf。
[0038]步骤3.4:将消息的ByteBuf发送至每个消息主题topic绑定的交换机exchange上,并发送到该交换机exchange绑定的消息的队列queue中,再推送到相应的微服务模块的消息监听器中,等待消费端的消费。
[0039]所述的步骤4包括以下分步骤:
[0040]步骤4.1:消费端的微服务模块的消息监听器接收消息中间件的服务器推送的消息。
[0041]步骤4.2:通过消息的消息主题topic,并从消息订阅树中找到匹配订阅方法列表,遍历消息方法列表获取到每个消息订阅者方法的方法信息。
[0042]步骤4.3:将获取到的方法信息反序列化成对应的方法参数类型,通过java的反射技术,调用订阅方法,完成消息的消费处理。
[0043]本专利技术与现有技术相比,具有以下有益效果:
[0044]1、本专利技术由于能在微服务模块启动前自动构建完成消息订阅树,使用redis缓存中心和nacos注册中心,实现分布式消息网关,且消息订阅树读多写少,利用订阅树的数据结构,使消息主题topic的查找效率远远高于现有技术的哈希表结构,不仅简化了消息处理的开发,也实现了实现微服务功能解耦,异步处理,减少消息处理的响应时间,降低系统负载压力,有利于对物联网设备的消息处理进行统一管理。
[0045]2、本专利技术可通过添加和解析自定义注解@Subscribe的方式创建消息订阅者,或通过手动注册的方式创建消息订阅者,简化了分布式消息开发的难度,业务只需关注自己的业务逻辑,不需要实现复杂的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于java微服务物联网分布式消息网关的方法,其特征是:包括以下步骤:步骤1:启动微服务模块;步骤2:创建消息队列和消息监听器;步骤3:消息发送端向消息中间件的服务器发送消息;步骤4:消费端消费消息。2.根据权利要求1所述的用于java微服务物联网分布式消息网关的方法,其特征是:所述的步骤1包括以下分步骤:步骤1.1:通过springboot启动微服务模块;步骤1.2:在微服务模块初始化注册java bean时,通过扫描指定包路径下的所有的class文件,找到class文件中在方法上添加了自定义注解@Subscribe的消息订阅者方法;步骤1.3:将所有消息订阅者方法的消息主题topic构建成消息的订阅树,并将消息的订阅树存到redis缓存中心中;步骤1.4:将微服务模块的服务实例注册到nacos注册中心中;步骤1.5:微服务模块启动成功并运行。3.根据权利要求2所述的用于java微服务物联网分布式消息网关的方法,其特征是:所述的步骤1.3包括以下分步骤:步骤1.3.1:逐个扫描到的消息订阅者方法,并解析消息订阅者方法上自定义注解@Subscribe的属性信息,获取消息订阅者方法的消息主题topic;步骤1.3.2:将消息主题topic通过“/”分割成topic数组,从消息订阅树的根节点开始匹配查找,初始查找深度depth=0;步骤1.3.3:判断查找深度depth是否等于topic数组的长度,若是,则执行步骤1.3.4,若否,则执行步骤1.3.5;步骤1.3.4:将当前的消息订阅者方法添加到当前节点的订阅方法列表中,转至步骤1.3.9;步骤1.3.5:遍历当前节点的下一级节点的列表,判断是否存在节点内容等于消息主题查找深度值topic[depth]的下一级节点,若存在,则执行步骤1.3.6,若不存在,则执行步骤1.3.7;步骤1.3.6:将查找到的该下一级节点作为当前节点,转至步骤1.3.8;步骤1.3.7:创建新的节点,并将当前的消息主题查找深度值topic[depth]作为新的节点的内容;步骤1.3.8:将新的节点添加到当前节点的下一级节点的订阅方法列表中,并将新的节点作为当前节点;步骤1.3.9:查找深度depth+1,继续下一轮的匹配查找;步骤1.3.10:重复步骤1.3.3至步骤1.3.9,直至完成所有消息订阅者方法的消息主题topic的添加,构建形成消息订阅树。4.根据权利要求1所述的用于java微服务物联网分布式消息网关的方法,其特征是:所述的步骤2中,根据消息订阅者方法...

【专利技术属性】
技术研发人员:胡朝罕赵瑾瑾
申请(专利权)人:上海电信科技发展有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1