CN115550438A - 物联网消息处理方法、装置、系统、设备及存储介质 - Google Patents
物联网消息处理方法、装置、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN115550438A CN115550438A CN202211222313.2A CN202211222313A CN115550438A CN 115550438 A CN115550438 A CN 115550438A CN 202211222313 A CN202211222313 A CN 202211222313A CN 115550438 A CN115550438 A CN 115550438A
- Authority
- CN
- China
- Prior art keywords
- message
- internet
- things
- amqp
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
Abstract
本公开提供了一种物联网消息处理方法、装置、系统、设备及存储介质,涉及通信技术领域。该方法应用于消息中间件,包括:基于MQTT协议与物联网设备建立通信连接;基于高级消息队列协议AMQP与服务器建立通信连接;接收物联网设备发送的MQTT消息;根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息;根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列;将所述消息队列中的消息分发至与所述消息队列绑定的服务器,以使所述服务器对所述消息队列进行消费。通过上述方法,将物联网设备的MQTT消息转换为AMQP消息,便于服务器进行负载均衡处理,解决了MQTT消息订阅的多实例消息重复消费的问题。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种物联网消息处理方法及装置、系统、设备及存储介质。
背景技术
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种基于代理(broker)的消息传输协议。MQTT消息的传输采用订阅(subscribe)/发布(publish)的方式,一个消息的发布者(publisher)将待发布的数据发送至一个代理设备(broker),至少一个消息的订阅者(subscriber)从代理设备处获取数据。MQTT消息协议由于规范简单,非常适合应用在需要低功耗和网络带宽有限的IoT(Internet of Things,物联网)场景中,包括遥感数据、汽车、智能家居、智慧城市、医疗医护等场景。例如可以应用在PLC(Programmable Logic Controller,可编程逻辑控制器)设备、SCADA(SupervisoryControl And Data Acquisition,监视控制和数据采集)设备等。
通常,在物联网应用下的MQTT消息的处理方式为:将服务器当做特殊的MQTT客户端,订阅所有的客户端消息,然后根据自定义的业务协议进行业务逻辑处理。随着物联网设备量的增大,单服务实例的压力增大,硬件资源扩容配比不均。在这种情况下如果进行多服务实例的扩容,由于每个服务都订阅同一个主题,所有的MQTT消息都会通过消息中间件转发到每个服务实例,如此会导致消息重复消费,加大业务处理的复杂度,也会造成服务压力不均衡,同时消息中间件需要转发多份消息造成不必要的带宽负荷。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种物联网消息处理方法及装置、系统、设备及存储介质,至少在一定程度上克服由于相关技术的限中消息重复消费的问题。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一个方面,提供一种物联网消息处理方法,包括:
基于MQTT协议与物联网设备建立通信连接;
基于高级消息队列协议AMQP与服务器建立通信连接;
接收物联网设备发送的MQTT消息;
根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息;
根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列;
将所述消息队列中的消息分发至与服务器,以使所述服务器对所述消息队列进行消费。
在本公开的一个实施例中,所述MQTT消息的消息格式包括消息主题、主题层级分隔符和通配符;所述AMQP消息的消息格式包括消息主题、主题单层分隔符和通配符;所述消息转换规则配置为对所述MQTT消息的主题层级分隔符和所述AMQP消息的主题层级分隔符进行替换。
在本公开的一个实施例中,根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列,包括:
通过主题交换机获取所述AMQP消息,所述主题交换机预先配置有与所述消息队列绑定的绑定键;
将所述AMQP消息与所述绑定键进行主题规则匹配,得到匹配结果;
根据所述匹配结果将所述AMQP消息存储至对应的消息队列。
在本公开的一个实施例中,所述绑定键包括主题字段和通配符,以使所述消息队列对所有主题字段相同的消息进行存储。
在本公开的一个实施例中,所述服务器包括与多个服务实例,多个所述服务实例对所述消息队列进行消费。
在本公开的一个实施例中,将所述消息队列中的消息分发至服务器,包括:按照轮询机制将所述消息队列中的消息平均分发给多个服务实例。
在本公开的一个实施例中,将所述消息队列中的消息分发至服务器,包括:
对于所述消息队列中每个待分发的消息,执行以下步骤:
接收多个所述服务实例发送的负载情况;
根据所述负载情况确定负载最小的服务实例,作为目标服务器;
将所述待分发的消息发送至所述目标服务器。
在本公开的一个实施例中,所述方法还包括:
接收所述服务器发送的AMQP消息;
根据预设的消息转换规则,将所述AMQP消息转换为MQTT主题消息;
将所述MQTT主题消息推送到订阅对应主题的物联网设备。
在本公开的一个实施例中,所述方法还包括:所述服务器接收到所述AMQP消息后,对所述AMQP消息进行处理,得到处理结果,将所述处理结果存储在分布式KV存储服务器中。
根据本公开的第二个方面,提供一种物联网消息处理装置,包括:
第一通信模块,用于基于MQTT协议与物联网设备建立通信连接;
第二通信模块,用于基于高级消息队列协议AMQP与服务器建立通信连接;
MQTT消息接收模块,用于接收物联网设备发送的MQTT消息;
消息转换模块,用于根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息;
消息存储模块,用于根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列;
消息分发模块,用于将所述消息队列中的消息分发至与所述消息队列绑定的服务器,以使所述服务器对所述消息队列进行消费。
根据本公开的第三个方面,提供一种物联网通信系统,包括物联网设备、服务器以及如上所述的物联网消息处理装置。
根据本公开的第四个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述的物联网消息处理方法。
根据本公开的第五个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的物联网消息处理方法。
本公开的实施例所提供的物联网消息处理方法、装置、系统、设备及存储介质,物联网设备和服务器分别通过MQTT协议和AMQP协议与消息中间件进行通信连接。物联网设备的MQTT消息在消息中间件中转换为AMQP消息。对AMQP消息进行路由规则匹配,将消息存储至消息队列中。多个服务实例基于消息队列进行消费,能够更好的适应服务实例的动态扩容缩容。解决了MQTT消息订阅的多服务实例消息重复消费的问题,平滑了服务实例压力,最大限度的利用了服务实例的处理能力,也避免了消息中间件需要进行多份流量转发的所带来的带宽压力。
消息经过内部由MQTT转换为AMQP进行负载均衡处理,而不需要引入多余的消息汇聚服务和消息中转组件,既提升了系统架构的灵活性也提高了系统的扩展性。且缩短了系统的通信链路,对业务问题的排查减少了障碍,也减少了日志落地的数量。减轻了运维人员的维护压力,提高了通信效率和消息送达率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出现有技术中物联网设备解决单服务实例压力的方案流程图;
图2示出本公开实施例中一种物联网消息处理系统的示意图;
图3示出本公开实施例中一种物联网消息处理方法的流程图;
图4示出本公开实施例中将AMQP消息存储至消息队列的工作原理图;
图5示出本公开又一个实施例中物联网消息处理方法的流程图;
图6示出本公开再一个实施例中物联网消息处理方法的流程图;
图7示出本公开一种具体应用场景下物联网设备消息处理流程图;
图8示出本公开实施例中一种物联网消息处理装置的示意图;和
图9示出本公开实施例中一种电子设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
本申请提供的方案,涉及。为了便于理解,下面首先对本申请涉及到的几个名词进行解释。
MQTT,即Message Queuing Telemetry Transport,消息队列遥测传输,基于TCP/IP协议栈而构建,在该协议中主要有三种身份:发布者(Publisher)、代理(Broker,服务器)、订阅者(Subscriber)。消息的发布者和订阅者都是客户端,消息代理是服务器。MQTT协议使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合,信息冗余小。任何一个客户端都可以订阅或者发布某个主题的消息,然后订阅了该主题的客户端则会收到该消息。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。AMQP中涉及消息(Message)、消息的生产者(Publisher)、消息的消费者(Consumer)、交换器(Exchange)和消息队列(Queue)。Exchange通过绑定(Binding)和Queue进行关联,在绑定(Binding)Exchange和Queue的同时,一般会指定一个Binding Key。Publisher将消息发送给Exchange的时候,一般会产生一个RoutingKey,当Routing Key和Binding Key对应上的时候,消息就会发送到对应的Queue中去。Consumer从Queue中读取消息。
为了解决物联网设备量增大后导致的单服务实例压力大的问题,参照图1所示,现有技术采用的方案如下:物联网设备110发送消息至消息中间件120。然后通过统一消息汇聚服务器130将消息分发至kafka消息中间件140,多个服务实例150通过kafka消息中间件140对消息进行消费。上述方案中,需要增加其他消息队列中间件(比如kafka)才能实现消息负载均衡处理。
基于此,本公开提供了一种物联网消息处理方法、装置、系统、设备及存储介质,不用通过增加其他消息队列中间件就可以实现消息负载均衡处理,服务实例可以动态扩容,既提升了系统架构的灵活性也提高了系统的扩展性。
图2示出了本公开可以应用的一种物联网通信系统的架构图。参照图2所示,物联网通信系统200包括物联网设备210、物联网消息处理装置220和服务器230。物联网消息处理装置220作为消息中间件,进行消息的接收和转发。物联网设备210通过MQTT协议和物联网消息处理装置220进行通信,服务器230图片通过AMQP方式连接物联网消息处理装置220。具体地,物联网设备210发送MQTT消息至物联网消息处理装置220,物联网消息处理装置220将MQTT消息转换为AMQP消息,并推入消息队列。服务器230从消息队列的消费来自物联网设备210的消息。服务器230发送控制指令到物联网设备210时,通过物联网消息处理装置220将服务器230发送的AMQP消息转换为MQTT消息,然后发布到订阅了对应主题的物联网客户端210。
图3示出本公开实施例中一种物联网消息处理方法300的流程图。参照图3所示,一种物联网消息处理方法300,包括:
步骤S301,基于消息队列遥测传输MQTT协议与物联网设备建立通信连接;
步骤S302,基于高级消息队列协议AMQP与服务器建立通信连接;
步骤S303,接收物联网设备发送的MQTT消息;
步骤S304,根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息;
步骤S305,根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列;
步骤S306,将所述消息队列中的消息分发至服务器,以使所述服务器对所述消息队列进行消费。
该方法中,物联网设备和服务器分别通过MQTT协议和AMQP协议与消息中间件进行通信连接。物联网设备的MQTT消息在消息中间件中转换为AMQP消息。对AMQP消息进行路由规则匹配,将消息存储至消息队列中。多个服务实例基于消息队列进行消费,能够更好的适应服务实例的动态扩容缩容,消息经过内部由MQTT转换为AMQP进行负载均衡处理,而不需要引入多余的消息汇聚服务和消息中转组件。解决了MQTT消息订阅的多服务实例消息重复消费的问题,平滑了服务实例压力,最大限度的利用了服务实例的处理能力,也降低了消息中间件不必要的带宽损耗。
下面,将结合附图及实施例对本公开示例实施例中物联网消息处理方法的各个步骤进行更详细的说明。
在步骤S301中,基于消息队列遥测传输MQTT协议与物联网设备建立通信连接。
具体地,物联网设备为MQTT协议的客户端,消息中间件为MQTT协议的代理服务器。物联网设备通过MQTT协议和消息中间件通信,发布消息以及订阅自己的业务主题。在通信过程中,物联网设备发送MQTT消息到消息中间件,并根据自己订阅的主题从消息中间件接收服务器发布的消息。
在步骤S302中,基于高级消息队列协议AMQP与服务器建立通信连接。具体地,服务器通过AMQP的方式连接到消息中间件,服务器声明创建消息队列以及消息队列绑定的路由规则到消息中间件。消息中间件根据服务器的声明,对绑定路由规则进行存储。
在步骤S303中,接收物联网设备发送的MQTT消息。每个物联网设备都要选定一个主题,以进行消息发布和订阅。具体地,MQTT消息的消息格式包括消息主题、主题层级分隔符和通配符。消息主题可以任意定制,主题层级之间用“/”(主题层级分隔符)进行分隔,例如主题为/a/b/c/d的消息。MQTT客户端可以使用完全字符匹配消息,也可以使用通配符进行消息匹配。通配符可以是单层通配符+,也可以是多层通配符#。单层通配符+可以替换单个主题层级。例如,订阅主题为/a/+/c/d、+/+/+/+时,可以收到主题为/a/b/c/d的消息,而订阅主题为/b/+/c/d、+/+/+时,则无法收到主题为/a/b/c/d的消息。多层通配符#可以替换任意主题层级,只能用于末尾。例如,订阅主题为/#、/a/#时,可以收到主题为/a/b/c/d的消息。
在本公开的实施例中,物联网设备发送和订阅主题为MQTT非通配符主题。具体地,MQTT消息的主题包括设备名称、主题层级分隔符和设备标识,例如路灯控制器订阅和发送以/Lamp/123为主题的MQTT消息。物联网设备非通配符主题的方式发送MQTT消息,以上报自身的业务数据,并仅接收与自身有关的指令。
在步骤S304中,根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息。
在本公开的实施例中,所述AMQP消息的消息格式包括消息主题、主题单层分隔符和通配符。具体地,AMQP消息支持.(主题单层分隔符)、#(多层通配符)和*(单层通配符)。单层通配符*用于匹配一个单词,#用于匹配多个单词(可以是零个)。
所述消息转换规则配置为对所述MQTT消息的主题层级分隔符和所述AMQP消息的主题层级分隔符进行替换。具体地,将MQTT消息的主题层级分隔符“/”替换为“.”,实现对MQTT消息的转换。例如,物联网设备的MQTT消息为/Lamp/123,将该消息转换为.Lamp.123。通过对MQTT消息和AMQP消息的层级分隔符进行替换,实现MQTT消息和AMQP消息之间的转变换。通过AMQP消息确定消息发送的路由规则。
在步骤S305中,根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列。
具体地,在本公开的实施例中,步骤S305包括:
步骤S3051,通过主题交换机获取所述AMQP消息,所述主题交换机预先配置有与所述消息队列绑定的绑定键;
步骤S3052,将所述AMQP消息与所述绑定键进行主题规则匹配,得到匹配结果;
步骤S3503,根据所述匹配结果将所述AMQP消息存储至对应的消息队列。
具体地,交换机(Exchange)用于根据AMQP消息的路由规则(routing key)和Exchange的类型将message发送到一个或者多个消息队列(Queue)中。主题交换机的类型为topic,是一种模糊匹配规则,根据通配符满足一部分规则就可以进行消息传送。主题交换机通过绑定键(binding key)和消息队列绑定。所述绑定键包括主题字段和通配符,以使所述消息队列对所有主题字段相同的消息进行存储。通配符可以是*或#,*用于匹配一个单词,#用于匹配多个单词(可以是零个)。获取AMQP消息的routing key后,对routing key和binding key进行主题规则匹配,根据匹配结果将消息存储至匹配成功的消息队列中。
图4示例性地示出了将AMQP消息存储至消息队列的工作原理图。参考图4所示,消息队列的数量为2个,分别为Queue421和Queue422,Queue421与主题交换机410绑定的binding key为.a.#,Queue422与主题交换机410绑定的binding key为.b.#。主题交换机410接收的AMQP消息为.a.123时,与.a.#匹配,该消息被路由至Queue421中。主题交换机410接收的AMQP消息为.b.123时,与.b.#匹配,该消息被路由至Queue421中。服务实例431和服务实例432对Queue421进行消费,服务实例433和服务实例434对Queue422进行消费。通过对AMQP消息和消息队列的绑定键进行匹配,将消息发送至不同的消息队列。
在步骤S206中,将所述消息队列中的消息分发至服务器,以使所述服务器对所述消息队列进行消费。
在本公开的一个实施例中,所述服务器包括与多个服务实例,多个所述服务实例对所述消息队列进行消费。通过多个服务实例对消息队列进行消费,以有效降低设备压力。
请参阅图5,为了更有效地均衡服务器的处理压力,根据服务器压力动态平衡压力负载。具体地,将所述消息队列中的消息分发至服务器,包括:
对于所述消息队列中每个待分发的消息,执行以下步骤:
步骤S501,接收多个所述服务实例发送的负载情况。具体地,通过消息中间件的采集插件定时接收来自服务器的负载情况。负载情况例如包括CPU使用情况、内存使用情况、IO消耗和网络情况等。
步骤S502,根据所述负载情况确定负载最小的服务实例,作为目标服务器。具体地,通过对各个服务实例的负载情况进行排序,确定负载最小的服务实例。
步骤S503,将所述待分发的消息发送至所述目标服务器。
通过上述过程,通过计算动态选择服务负载较低的实例进行消息转发,负载较低承担更多消息消费处理任务,通过此方式达到总体服务实例负载动态平衡的效果。
在本公开的一个实施例中,在未采集到服务实例的负载情况时,或者在消息处理的初始阶段,将所述消息队列中的消息分发至服务器,包括:按照轮询机制将所述消息队列中的消息平均分发给多个服务实例。消息处理的初始阶段例如可以是服务实例开始处理消息后的预设时间内,例如服务实例开始处理消息后的30min、1h、2h内等,本公开不进行具体的限制。在初始阶段,各个服务实例的负载压力较低,通过轮询机制进行消息分发。轮询机制通过依次询问的方式,对消息进行平均分发。
在本公开的一个实施例中,服务器在接收到所述AMQP消息后,对所述AMQP消息进行处理,得到处理结果,将所述处理结果存储在分布式KV存储服务器中,以便于后续进行提取处理等。通过分布式KV存储服务器进行数据中转,能够进一步分担后端的服务压力,提升了系统架构和系统业务的横向扩展性以及系统的稳定性。
在本公开的一个实施例中,参阅图6所示,所述物联网消息处理方法还包括:
步骤S601,接收所述服务器发送的AMQP消息。
步骤S602,根据预设的消息转换规则,将所述AMQP消息转换为MQTT主题消息。
步骤S603,将所述MQTT主题消息推送到订阅对应主题的物联网设备。
具体地,服务器通过AMQP消息向物联网设备下发控制指令等。消消息转换规则参照上文所述。例如,AMQP消息为.Lamp.123,将AMQP消息转换为MQTT消息/Lamp/123。然后将根据物联网设备订阅的主题,对MQTT消息进行转发。
参见图7所示,为了便于理解,本公开以路灯采集与控制的物联网应用场景对本公开的物联网消息处理方法进行说明。在该场景中,具有多个路灯控制器和服务实例,路灯控制器包括设备1(Sn:123)711、设备2(Sn:456)712和设备3(Sn:789)713。服务器包括第一服务实例731和第二服务实例732。服务器接收来自路灯控制器上报的各种业务数据,以及服务器可以主动下发控制指令实现对路灯控制器的配置。第一服务实例731和第二服务实例732通过AMQP的方式连接消息中间件720,声明并创建队列以及绑定路由规则.Lamp.#到消息中间件720的主题交换机。路灯控制器通过MQTT的方式连接中间件,发送和订阅自己的业务主题。
在路灯控制器和服务器的通信过程中,设备1(Sn:123)711发送和订阅以/Lamp/123的主题,设备2(Sn:456)712发送以/Lamp/456的主题,设备3(Sn:789)713发送以/Lamp/789的主题,在消息中间件720通过解析分别转换为:.Lamp.123、.Lamp.456、.Lamp.789。上述路东控制器转换后的格式均可以匹配绑定的路由规则.Lamp.#,因此将MQTT消息做格式替换并推入消息队列。第一服务实例731和第二服务实例732都通过AMQP连接中间件,接收和处理消息队列的中消息。在初始阶段,消息中间件720还没采集到服务的负载信息时,消息队列中的消息都采用轮询发送的方式,平均分发给第一服务实例731和第二服务实例732。之后,多个服务实例定时上报自身的负载信息,消息中间件720根据接收到的负载信息,根据计算得到的负载压力最小的服务实例动态选择消息转送目标。多个服务实例就可以从消息队列动态的消费所有来自路灯控制器的消息。服务实例对消息进行处理后通过分布式KV中间件进行数据中转。
当服务器发送AMQP消息到消息中间件720时,根据发送时的队列以及路由信息,将其解析转换成MQTT消息主题规则,并发布到订阅该主题的MQTT客户端。例如,第一服务实例731发送AMQP消息.Lamp.123,将其转换为/Lamp/123,然后发布到设备1(Sn:123)。
图8是本公开的物联网消息处理装置的一种实施例的模块示意图。如图8所示,一种物联网消息处理装置800,包括:
第一通信模块810,用于基于MQTT协议与物联网设备建立通信连接;
第二通信模块820,用于基于高级消息队列协议AMQP与服务器建立通信连接;
MQTT消息接收模块830,用于接收物联网设备发送的MQTT消息;
消息转换模块840,用于根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息;
消息存储模块850,用于根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列;
消息分发模块860,用于将所述消息队列中的消息分发至与所述消息队列绑定的服务器,以使所述服务器对所述消息队列进行消费。
本公开的实施例所提供的物联网消息处理装置,物联网设备和服务器分别通过MQTT协议和AMQP协议与消息中间件进行通信连接。物联网设备的MQTT消息在消息中间件中转换为AMQP消息。对AMQP消息进行路由规则匹配,将消息存储至消息队列中。多个服务实例基于消息队列进行消费,能够更好的适应服务实例的动态扩容缩容,消息经过内部由MQTT转换为AMQP进行负载均衡处理,而不需要引入多余的消息汇聚服务和消息中转组件。解决了MQTT消息订阅的多服务实例消息重复消费的问题,平滑了服务实例压力,最大限度的利用了服务实例的处理能力,也降低了消息中间件不必要的带宽损耗。
在本公开的一个实施例中,物联网消息处理装置还可包括实现上述各物联网消息处理方法实施例的其他流程步骤的模块。由于物联网消息处理装置800的各功能已在其对应的方法实施例中予以详细说明,本公开于此不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
在本公开的示例性实施例中,还提供了一种能够实现上述物联网消息处理方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图9来描述根据本发明的这种实施方式的电子设备900。图9显示的电子设备900仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,电子设备900以通用计算设备的形式表现。电子设备900的组件可以包括但不限于:上述至少一个处理单元910、上述至少一个存储单元920、连接不同系统组件(包括存储单元920和处理单元910)的总线930。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元910执行,使得所述处理单元910执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元910可以执行如图3中所示的一种物联网消息处理方法,包括:步骤S301,基于消息队列遥测传输MQTT协议与物联网设备建立通信连接;步骤S302,基于高级消息队列协议AMQP与服务器建立通信连接;步骤S303,接收物联网设备发送的MQTT消息;步骤S304,根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息;步骤S305,根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列;步骤S306,将所述消息队列中的消息分发至服务器,以使所述服务器对所述消息队列进行消费。
存储单元920可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)9201和/或高速缓存存储单元9202,还可以进一步包括只读存储单元(ROM)9203。
存储单元920还可以包括具有一组(至少一个)程序模块9205的程序/实用工具9204,这样的程序模块9205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线930可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备900也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备900能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备900还可以通过网络适配器960与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器960通过总线930与电子设备900的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
描述了根据本发明的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本公开实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (13)
1.一种物联网消息处理方法,其特征在于,包括:
基于消息队列遥测传输MQTT协议与物联网设备建立通信连接;
基于高级消息队列协议AMQP与服务器建立通信连接;
接收物联网设备发送的MQTT消息;
根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息;
根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列;
将所述消息队列中的消息分发至服务器,以使所述服务器对所述消息队列进行消费。
2.根据权利要求1所述的物联网消息处理方法,其特征在于,所述MQTT消息的消息格式包括消息主题、主题层级分隔符和通配符;所述AMQP消息的消息格式包括消息主题、主题单层分隔符和通配符;所述消息转换规则配置为对所述MQTT消息的主题层级分隔符和所述AMQP消息的主题层级分隔符进行替换。
3.根据权利要求1所述的物联网消息处理方法,其特征在于,根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列,包括:
通过主题交换机获取所述AMQP消息,所述主题交换机预先配置有与所述消息队列绑定的绑定键;
将所述AMQP消息与所述绑定键进行主题规则匹配,得到匹配结果;
根据所述匹配结果将所述AMQP消息存储至对应的消息队列。
4.根据权利要求3所述的物联网消息处理方法,其特征在于,所述绑定键包括主题字段和通配符,以使所述消息队列对所有主题字段相同的消息进行存储。
5.根据权利要求1所述的物联网消息处理方法,其特征在于,所述服务器包括与多个服务实例,多个所述服务实例对所述消息队列进行消费。
6.根据权利要求5所述的物联网消息处理方法,其特征在于,将所述消息队列中的消息分发至服务器,包括:按照轮询机制将所述消息队列中的消息平均分发给多个服务实例。
7.根据权利要求5所述的物联网消息处理方法,其特征在于,将所述消息队列中的消息分发至服务器,包括:
对于所述消息队列中每个待分发的消息,执行以下步骤:
接收多个所述服务实例发送的负载情况;
根据所述负载情况确定负载最小的服务实例,作为目标服务器;
将所述待分发的消息发送至所述目标服务器。
8.根据权利要求1所述的物联网消息处理方法,其特征在于,所述方法还包括:
接收所述服务器发送的AMQP消息;
根据预设的消息转换规则,将所述AMQP消息转换为MQTT主题消息;
将所述MQTT主题消息推送到订阅对应主题的物联网设备。
9.根据权利要求1所述的物联网消息处理方法,其特征在于,所述方法还包括:所述服务器接收到所述AMQP消息后,对所述AMQP消息进行处理,得到处理结果,将所述处理结果存储在分布式KV存储服务器中。
10.一种物联网消息处理装置,其特征在于,包括:
第一通信模块,用于基于MQTT协议与物联网设备建立通信连接;
第二通信模块,用于基于高级消息队列协议AMQP与服务器建立通信连接;
MQTT消息接收模块,用于接收物联网设备发送的MQTT消息;
消息转换模块,用于根据预设的消息转换规则,将所述MQTT消息转换为AMQP消息;
消息存储模块,用于根据预先存储的绑定路由规则,将所述AMQP消息存储至对应的消息队列;
消息分发模块,用于将所述消息队列中的消息分发至与所述消息队列绑定的服务器,以使所述服务器对所述消息队列进行消费。
11.一种物联网通信系统,其特征在于,包括物联网设备、服务器以及如权利要求10所述的物联网消息处理装置。
12.一种电子设备,其特征在于,处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~9中任意一项所述的物联网消息处理方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~9中任意一项所述的物联网消息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211222313.2A CN115550438A (zh) | 2022-10-08 | 2022-10-08 | 物联网消息处理方法、装置、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211222313.2A CN115550438A (zh) | 2022-10-08 | 2022-10-08 | 物联网消息处理方法、装置、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115550438A true CN115550438A (zh) | 2022-12-30 |
Family
ID=84731211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211222313.2A Pending CN115550438A (zh) | 2022-10-08 | 2022-10-08 | 物联网消息处理方法、装置、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115550438A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116599922A (zh) * | 2023-05-09 | 2023-08-15 | 广州市玄武无线科技股份有限公司 | 一种多类型消息的路由方法、系统、装置及介质 |
-
2022
- 2022-10-08 CN CN202211222313.2A patent/CN115550438A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116599922A (zh) * | 2023-05-09 | 2023-08-15 | 广州市玄武无线科技股份有限公司 | 一种多类型消息的路由方法、系统、装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101926394B1 (ko) | 클라우드 컴퓨팅 시스템 및 클라우드 시스템에서의 부하 분리 방법 | |
US10425253B2 (en) | Inband data gathering with dynamic intermediary route selections | |
CN109218355A (zh) | 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法 | |
CN104811459A (zh) | 用于消息服务的处理方法、装置及系统、消息服务系统 | |
CN102055771B (zh) | 面向云服务的多并发业务流控制装置及控制方法 | |
CN111327483B (zh) | 一种设备纳管方法、系统及存储介质 | |
CN105183470A (zh) | 一种自然语言处理系统化服务平台 | |
CN115550438A (zh) | 物联网消息处理方法、装置、系统、设备及存储介质 | |
CN113468221A (zh) | 一种基于kafka消息数据总线的系统集成方法 | |
CN113747373B (zh) | 消息处理系统、装置和方法 | |
CN114025002A (zh) | 一种基于mqtt信息传输的方法、系统及通信设备 | |
KR20110065448A (ko) | 메시지 처리 파이프라인 구성 | |
CN113971098A (zh) | 一种RabbitMQ消费管理方法及系统 | |
KR101328414B1 (ko) | 이기종 풍력발전기의 통합 게이트웨이 장치 | |
CN103140851A (zh) | 包括中间件机环境的系统 | |
CN116455817A (zh) | 一种软件定义云网融合架构及路由实现方法 | |
CN104052723A (zh) | 信息处理方法和服务器 | |
CN113810264B (zh) | 信息传输方法、装置、电子设备和存储介质 | |
CN115774580A (zh) | 云边数据传输控制系统、方法、存储介质 | |
CN103051679B (zh) | 数据传输方法及接口设备、云优化控制设备 | |
CN112765294A (zh) | 一种气象大数据处理调度系统 | |
CN113344354A (zh) | 智能电网应用场景的数据标准化处理系统和处理方法 | |
US20240146800A1 (en) | Data plane reduction for eventing components | |
CN113905103A (zh) | 一种自动适配多协议的通信适配方法 | |
CN115242721A (zh) | 一种嵌入式系统及基于其的数据流负载均衡方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |