当前位置: 首页 > news >正文

RabbitMQ开启MQTT协议支持

1)RabbitMQ启用MQTT插件

root@mq:/# rabbitmq-plugins enable rabbitmq_mqtt
Enabling plugins on node rabbit@mq:
rabbitmq_mqtt
The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_mqttrabbitmq_web_dispatch
Applying plugin configuration to rabbit@mq...
The following plugins have been enabled:rabbitmq_mqttstarted 1 plugins.
root@mq:/# rabbitmq-plugins enable rabbitmq_web_mqtt
Enabling plugins on node rabbit@mq:
rabbitmq_web_mqtt
The following plugins have been configured:rabbitmq_managementrabbitmq_management_agentrabbitmq_mqttrabbitmq_web_dispatchrabbitmq_web_mqtt
Applying plugin configuration to rabbit@mq...
The following plugins have been enabled:rabbitmq_web_mqttstarted 1 plugins.
root@mq:/# 

2)RabbitMQ管理控制台查看
如果插件启动成功,rabbitmq会打开1883和15675端口:
在这里插入图片描述

3)用MQTTX工具测试
在这里插入图片描述
4)用eclipse paho客户端测试
添加依赖

 <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.2.5</version>
</dependency>

收发消息测试

@RestController
public class DemoController {@GetMapping("/publish")public String publish() throws MqttException {MqttClientPersistence persistence = new MemoryPersistence();;//内存持久化MqttClient client = new MqttClient("tcp://192.168.137.138:1883", "abc", persistence);//连接选项中定义用户名密码和其它配置MqttConnectOptions options = new MqttConnectOptions();options.setCleanSession(true);//参数为true表示清除缓存,也就是非持久化订阅者,这个时候只要参数设为true,一定是非持久化订阅者。而参数设为false时,表示服务器保留客户端的连接记录options.setAutomaticReconnect(true);//是否自动重连options.setConnectionTimeout(30);//连接超时时间  秒options.setKeepAliveInterval(10);//连接保持检查周期  秒options.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1_1); //版本options.setUserName("xjs1919");options.setPassword("123321".toCharArray());// client.setManualAcks(true);client.connect(options);//连接//订阅topicclient.subscribe("demoTopic", 2);// 设置回调,将来收到消息的时候会被回调client.setCallback(new MqttCallbackExtended() {@Overridepublic void connectComplete(boolean reconnect, String serverURI) {System.out.println("连接完成");}@Overridepublic void connectionLost(Throwable cause) {System.out.println("连接丢失");}@Overridepublic void messageArrived(String topic, MqttMessage message) throws Exception {System.out.println("收到消息,topic:"+topic + ", msg:" + new String(message.getPayload()));//client.messageArrivedComplete(message.getId(),message.getQos());}@Overridepublic void deliveryComplete(IMqttDeliveryToken token) {// Qos0: 当消息发送出去就回调// Qos1: 当发送者收到了puback的时候的回调// Qos2: 当发送者收到了pubcomp的时候的回调System.out.println("消息发送完成");}});client.publish("demoTopic", "hello,这是一个测试消息!".getBytes(), 2, false);return "ok";}}

参考文章:
https://www.cnblogs.com/motion/p/14974024.html
https://blog.csdn.net/u013615903/article/details/131395264

http://www.lryc.cn/news/306576.html

相关文章:

  • Orange3数据预处理(列选择组件)数据角色及类型描述
  • c sharp资料
  • 《低功耗方法学》翻译——第十四章:电源切换网络设计
  • 如何使用Axure RP制作web页面并实现无公网ip远程访问——“cpolar内网穿透”
  • vue2实现无感刷新token
  • 每日学习-2月18日
  • AI 使人机交互发生根本性转变 AI芯片主战场,变了
  • 容器库(12)-std::unordered_multiset
  • Mysql学习之事务日志undolog深入剖析
  • springboot整合druid及可能遇到的问题
  • c++文件的打开、读写和关闭。缓冲区的使用和控制。
  • 网络层的DDoS攻击与应用层的DDoS攻击之间的区别
  • Windows系统安全策略设置之本地NTLM重放提权
  • AI云增强升级!还原生动人像,拍出质感照片
  • PHP WebSocket:技术解析与实用指南
  • K8S实战:Centos7部署Kubernetes1.24.0集群
  • webpack的使用(中)
  • matlab经验模式分解的R波检测算法
  • win10编译openjdk源码
  • mysql 自定义函数create function
  • 【析】装卸一体化车辆路径问题的自适应并行遗传算法
  • react项目中的redux以及react-router-dom
  • django学习网址
  • @ 代码随想录算法训练营第4周(C语言)|Day21(二叉树)
  • Android的消息机制--Handler
  • 获取用户信息与token理解
  • 网络设备和网络软件
  • 全连接层是什么
  • JAVA工程师面试专题-《Redis》篇
  • JavaScript BOM