mqtt服务搭建及python调用

本文介绍了如何在Linux环境下使用Docker部署Eclipse Mosquitto MQTT服务,并提供了Python代码示例,展示了如何连接服务端发布和订阅消息。首先,通过Docker Hub下载镜像并创建目录,然后初始化配置文件,设置权限并启动服务。接着,启动订阅者容器并展示Python代码,分别用于服务端订阅和客户端发布消息。

通过镜像搭建mqtt服务

1.从dockerhub下载镜像

docker pull eclipse-mosquitto

2.创建相应的目录:

mkdir -p /mosquitto/config
mkdir -p /mosquitto/data
mkdir -p /mosquitto/log
3.初始化配置文件

cat > /mosquitto/config/mosquitto.conf << EOF
listener 1883
allow_anonymous true
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
EOF

4.修改权限

chmod -R 755 /mosquitto

5.启动MQTT服务端镜像

docker run -itd --name=mosquitto \
--privileged -p 1883:1883 -p 9001:9001 \
-v /mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf \
-v /mosquitto/data:/mosquitto/data \
-v /mosquitto/log:/mosquitto/log \
eclipse-mosquitto

6.启动订阅消息

docker run -it --name=mosquitto_sub --privileged eclipse-mosquitto sh
进入到容器后执行命令,server_ip填上面启动服务端的IP地址,topic填要订阅的主题
mosquitto_sub -h 10.10.22.52 -p 1883 -u zach -P 123456 -t topic

在云平台搭建MQTT服务器有多种方式,以下分别介绍: ### 代码实现方式 可以使用Python代码借助`paho - mqtt`库在云服务搭建MQTT服务器,示例代码如下: ```python from paho.mqtt import client as mqtt_client import random broker = '0.0.0.0' # 云服务器公网IP port = 1883 # MQTT 协议端口 topic = "lmq" # 调用 Python random.randint 函数随机生成 MQTT 客户端 id client_id = f'python-mqtt-{random.randint(0, 1000)}' def connect_mqtt() -> mqtt_client: def on_connect(client, userdata, flags, rc): if rc == 0: print("Connected to MQTT Broker!") else: print("Failed to connect, return code %d\n", rc) client = mqtt_client.Client(client_id) client.on_connect = on_connect client.connect(broker, port) return client def subscribe(client: mqtt_client): def on_message(client, userdata, msg): print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic") client.subscribe(topic) client.on_message = on_message def run(): client = connect_mqtt() subscribe(client) client.loop_forever() if __name__ == '__main__': run() ``` 以上代码实现了一个简单的MQTT服务器连接和订阅功能。需要将`broker`替换为云服务器的公网IP地址,当运行代码时,会尝试连接到指定的MQTT服务器,并订阅指定的主题,接收到消息时会打印消息内容[^1]。 ### 通过文件部署方式 可以在云服务器中搭建MQTT平台。可通过链接https://pan.baidu.com/s/1soetUhqIDHqpUrbXuDgPwg?pwd=udbe ,提取码:udbe 获取相关文件。在云服务器中打开I盘,将本地I盘中的`formqtt`文件夹复制到云服务器中的C盘,将其中的压缩包解压(由于购买的服务器配置低,解压速度慢,有考虑先在本地电脑解压,再复制,但有文件容易丢失的风险,因此最好将压缩包复制过去,在云服务器中解压),后续操作均在云服务器中进行[^2]。 ### 端口相关说明 在搭建过程中还需要注意不同端口的作用,如18083是EMQX服务器控制台网页端口,1883是一般客户端访问EMQX服务器的端口(例如:PC桌面应用程序、ESP32),8083是WebSocket客户端访问EMQX服务器的端口,WebSocket访问的端口与其他不同[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值