消息推送案例

业务场景
1、C 端扫码收款后,要求商家APP或音箱设备播报语音。
2、商家收银成功后,商家 APP 的订单列表及时提醒有新订单
3、远程推送指令给设备(获取设备端日志、网络检测、版本升级、应用卸载、关闭、重启)

一、基于 redis 队列实现推送
1、如何保证队列及时消费?多线程消费 + 队列堆积监控,及时消费保证消息不堆积
2、通过 http异步上报推送结果(也可以采用 kafka,看具体场景),及时分析送达率


image.png

二、websocket + netty 实现推送
1、如何记录设备连接到那个实例上? 在 redis 中记录clientId->conn,clientId->host
2、推送消息时,查询设备连接的hostId,在 redis 中建立 hostId 的队列,然后将消息发送到队列
3、设备连接后,消费 redis 队列,获取连接对象发送
4、设备断线重连后,优先查询上次连接的队列,消息历史消息,然后监听新的队列


image.png

三、基于 rabbitmq 的消息队列
1、设备通过 mqtt 协议直接 rabbitmq,建立队列同时监听队列,接收队列的消息
2、推送接口构建 routekey,发现消息到指定的队列


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,131评论 19 139
  • 一、前言 消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来...
    Java机械师阅读 344评论 1 0
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,356评论 0 13
  • 感觉自己有点神经衰弱,总是觉得手机响了;屋外有人走过;每次妈妈不声不响的进房间突然跟我说话,我都会被吓得半死!一整...
    章鱼的拥抱阅读 2,226评论 4 5
  • 夜莺2517阅读 127,762评论 1 9