跳到主要内容

基于redis消息总线

本章节针对消息总线的封装进行讲解,也叫发布订阅机制,用于解决跨服务或集群部署的问题。

基于redis的实现

1. 客户端发送消息

@Autowired
private JeecgRedisClient jeecgRedisClient;
BaseMap baseMap = new BaseMap();
baseMap.put("userId", "");
baseMap.put("message", message);
jeecgRedisClient.sendMessage(WebSocket.REDIS_TOPIC_NAME, baseMap);

2. 编写消息监听器

@Component(WebSocket.REDIS_TOPIC_NAME)
public class SocketHandler implements JeecgRedisListener {

@Autowired
private WebSocket webSocket;

@Override
public void onMessage(BaseMap map) {
log.debug("【Redis发布订阅模式】redis Listener: {},参数:{}",WebSocket.REDIS_TOPIC_NAME, map.toString());

String userId = map.get("userId");
String message = map.get("message");
if (ObjectUtil.isNotEmpty(userId)) {
//pc端消息推送具体人
webSocket.pushMessage(userId, message);
//app端消息推送具体人
webSocket.pushMessage(userId+CommonSendStatus.APP_SESSION_SUFFIX, message);
} else {
//推送全部
webSocket.pushMessage(message);
}

}
}