物联网平台消息总线设计

物联网平台消息总线设计

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

采用技术

本设计采用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**

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值