redis消息队列实现跨服务器通信的梳理

定义用于操作redis消息队列的类——Redis
在这里插入图片描述subscribe:向redis指定的通道subscribe订阅消息,如服务器1中的client1登录上线了,其用户id为1,那么subscribe(1),即告诉消息队列,如果有channel为1 的消息,告诉我。

流程梳理

在这里插入图片描述

1.每个服务器启动后,其事务处理类ChatService的构造函数中,先注册一个回调函数,用来处理当其消息队列中有该服务器订阅频道的信息后的一系列操作(将该频道的信息发送给注册该回调的服务器上的用户)。
2.当用户在该服务器登录上线后,该服务器就订阅一个以该用户id为channel id的频道,告诉redis这个id是我所关系的事件,如果有谁想发消息给这个id,调用我注册的回调函数,发信息给我。
3.当用户下线时,该服务器要取消该id的订阅(unsubscribe)。
4.在一对一或者群组聊天中,对于toid,
  我们先判断该toid用户在不在当前服务器的在线用户中,如果在直接发消息
  如果不在当前服务器中,再判断该toid的状态,如果是offline,存储离线消息
  如果其状态为online,我们可以判断该toid在其它服务器上在线,调用publish,给“toid”频道发布消息


一台服务器会订阅多个channel,代表该服务器当前有哪些在线用户,如果redis消息队列中有其在线用户对应的频道,消息队列就会调用该服务器注册的回调函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值