二十三、 Redis 发布订阅模式

(参考:【进阶篇】2.16 Redis 消息传递发布订阅模式详解_redis发布订阅模式-优快云博客

)

1,页面message/index.vue(系统管理/通知通告)从下拉操作“点击发布”

2,接受请求

src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java

@RequestMapping(value = "/doReleaseData", method = RequestMethod.GET)
public Result<SysAnnouncement> doReleaseData(…)

(1)将本通告保存为“已发送”

(2)调用websocket,发送点对点消息

webSocket.sendMessage(obj.toJSONString());

webSocket.sendMessage(userIds, obj.toJSONString());

(3)redis的订阅发布模式下的监听器

src/main/java/org/jeecg/modules/message/websocket/SocketHandler.java

监听消息(通过redis发布订阅,推送消息)
* 此方案:解决集群部署的问题,多实例节点(也就是发送消息端先发送消息到redis中,每个服务节点收到redis消息,再触发具体的ws推送)

SocketHandler.java àonMessage()

Redis初始化配置类

org.jeecg.common.modules.redis.config.RedisConfig.java

配置监听容器jeecg_redis_topic

@Bean
public RedisMessageListenerContainer redisContainer(RedisConnectionFactory redisConnectionFactory, RedisReceiver redisReceiver, MessageListenerAdapter commonListenerAdapter) {
   
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
   
container.setConnectionFactory(redisConnectionFactory);
   
container.addMessageListener(commonListenerAdapter, new ChannelTopic("jeecg_redis_topic"));
   
return container;
}

(4) 同步企业微信、钉钉的消息通知
Response<String> dtResponse = dingtalkService.sendActionCardMessage(sysAnnouncement, null, true);
wechatEnterpriseService.sendTextCardMessage(sysAnnouncement,
true);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值