Skip to content

xsShuang/iot-msg-bus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

物联网平台消息总线设计

一个物联网平台会有很多的消息类型,如设备上报的数据消息,设备离线,设备上线等消息。传统的消息处理无法满足错综复杂的物联网平台,基于主题订阅的消息模型是很适合用在物联网领域。

采用技术

本设计采用rabbitmq 实现基于topic的主题订阅消息模型

消息总线设计

所有设备相关消息的 routingKey 格式均为:device.{$productId}.{$deviceId}.{$messageType}.{$messageTypeId}

支持模糊匹配(# 匹配一个或多个单词的情况,* 匹配一个单词的情况)

说明:

{$productId}:设备产品id;

{$deviceId}:设备实例id;

{$messageType}:消息类型;

{$messageTypeId}:消息类型的具体内容id;

例子:

device.123.456.event.789

表示产品id为123,设备id为456,消息类型为event,类型的具体内容id为789

使用:

下面的代码表示监听所有设备的 event 消息

@Subscribe("device.*.*.event.*")
public void message1(String s){
    System.out.println("message1" + s);
}

好处

无需关注rabbitmq 的相关配置,只需要一个注解即可开启消息订阅,屏蔽了底层的队列等具体细节。

实现方案

1.首先自定义注解,参考@RabbitListener,必须值,路由key(routingKey )

2.参考@RabbitListener的实现,将所有 routingKey 绑定到一个单独匿名队列(名字随机,断开即自动销毁,不持久化)中

具体实现思路参考文章 @RabbitListener源码解析

源码地址:https://github.com/xsShuang/iot-msg-bus

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages