千家信息网

前端与RabbitMQ实时消息推送怎么实现

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要讲解了"前端与RabbitMQ实时消息推送怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"前端与RabbitMQ实时消息推送怎么实现
千家信息网最后更新 2025年11月09日前端与RabbitMQ实时消息推送怎么实现

这篇文章主要讲解了"前端与RabbitMQ实时消息推送怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"前端与RabbitMQ实时消息推送怎么实现"吧!

web 端实时消息推送,常用的实现方式比较多,但万变不离其宗,底层基本上还是依赖于 websocketMQTT 协议也不例外。

RabbitMQ 搭建

RabbitMQ的基础搭建就不详细说了,自行百度一步一步搞问题不大,这里主要说一下两个比较重要的配置。

1、开启 mqtt 协议

默认情况下RabbitMQ是不开启MQTT 协议的,所以需要我们手动的开启相关的插件,而RabbitMQMQTT 协议分为两种。

第一种 rabbitmq_mqtt 提供与后端服务交互使用,对应端口1883

rabbitmq-plugins enable rabbitmq_mqtt

第二种 rabbitmq_web_mqtt 提供与前端交互使用,对应端口15675

rabbitmq-plugins enable rabbitmq_web_mqtt

RabbitMQ 管理后台看到如下的显示,就表示MQTT 协议开启成功,到这中间件环境就搭建完毕了。

使用MQTT 协议默认的交换机 Exchangeamp.topic,而我们订阅的主题会在 Queues 注册一个客户端队列,路由 Routing key 就是我们设置的主题。

服务端消息发送

web 端实时消息推送一般都是单向的推送,前端接收服务端推送的消息显示即可,所以就只实现消息发送即可。

1、mqtt 客户端依赖包

引入 spring-integration-mqttorg.eclipse.paho.client.mqttv3两个工具包实现

    org.springframework.integration    spring-integration-mqtt    org.eclipse.paho       org.eclipse.paho.client.mqttv3    1.2.0

2、消息发送者

消息的发送比较简单,主要是应用到 @ServiceActivator 注解,需要注意messageHandler.setAsync属性,如果设置成 false,关闭异步模式发送消息时可能会阻塞。

@Configurationpublic class IotMqttProducerConfig {    @Autowired    private MqttConfig mqttConfig;    @Bean    public MqttPahoClientFactory mqttClientFactory() {        DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();        factory.setServerURIs(mqttConfig.getServers());        return factory;    }    @Bean    public MessageChannel mqttOutboundChannel() {        return new DirectChannel();    }    @Bean    @ServiceActivator(inputChannel = "iotMqttInputChannel")    public MessageHandler mqttOutbound() {        MqttPahoMessageHandler messageHandler = new MqttPahoMessageHandler(mqttConfig.getServerClientId(), mqttClientFactory());        messageHandler.setAsync(false);        messageHandler.setDefaultTopic(mqttConfig.getDefaultTopic());        return messageHandler;    }}

MQTT 对外提供发送消息的 API 时,需要使用 @MessagingGateway注解,去提供一个消息网关代理,参数 defaultRequestChannel 指定发送消息绑定的channel

可以实现三种API接口,payload 为发送的消息,topic 发送消息的主题,qos 消息质量。

@MessagingGateway(defaultRequestChannel = "iotMqttInputChannel")public interface IotMqttGateway {    // 向默认的 topic 发送消息    void sendMessage2Mqtt(String payload);    // 向指定的 topic 发送消息    void sendMessage2Mqtt(String payload,@Header(MqttHeaders.TOPIC) String topic);    // 向指定的 topic 发送消息,并指定服务质量参数    void sendMessage2Mqtt(@Header(MqttHeaders.TOPIC) String topic, @Header(MqttHeaders.QOS) int qos, String payload);}

前端消息订阅

前端使用与服务端对应的工具 paho-mqtt mqttws31.js实现,实现方式与传统的 websocket 方式差不多,核心方法 client = new Paho.MQTT.Client 和 各种监听事件,代码比较简洁。

注意:要保证前后端 clientId的全局唯一性,我这里就简单用随机数解决了

测试

前后端的代码并不多,接下来我们测试一下,弄了个页面看看效果。

首先用 postman 模拟后端发送消息

http://127.0.0.1:8080/fun/sendMessage?message=我是程序员内点事&topic=push_message_topic

感谢各位的阅读,以上就是"前端与RabbitMQ实时消息推送怎么实现"的内容了,经过本文的学习后,相信大家对前端与RabbitMQ实时消息推送怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

消息 推送 前端 实时 主题 服务 事件 情况 方式 学习 成功 两个 代码 内容 参数 客户 客户端 就是 工具 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 吴中区提供网络技术服务电话 五段式英语作文网络安全 固始城市生活网络技术服务公司 xml数据库产品 数据库批量修改数据中的一个字符 还有几天网络技术 实时数据库价格对比 软件开发怎么定位自己的工资 网络安全知识论文2000字 帮我找一下国家网络安全周视频 数据库原理作业题 吉安服务器哪里比较好 怎么给数据库字段添加自增 浪潮服务器电源管理 不同微信小程序共享数据库 无法接触到激活服务器 服务器进不去程序怎么办 上海移动网络技术收费 计算机四级数据库考哪2科 上海雅延互联网科技公司 软件开发刚毕业能去外包吗 为什么是否在数据库中会变成数字 临沂市鼎力网络技术 数据库迭代 互联网包含软件开发吗 阿里云虚拟主机数据库版本 腾讯和阿里服务器dns 阿里云服务器反爬虫规则 八爪鱼采集数据到本地数据库 网络安全工作取得的重大成就
0