EMQX 服务器搭建 & 使用python生产消费
一、EMQX 服务器搭建
- 进入下载链接https://www.emqx.io/zh/downloads?os=Ubuntu 我使用的是ubuntu
- 选择合适的版本下载
3.安装并启动
启动:sudo systemctl start emqx
关闭:emqx stop
4.验证
登录EMQX的管理界面验证
访问链接 http://localhost:18083/ 其中localhost为你的ip地址,可能部署在服务上的就是你的服务器地址
默认用户名及密码:
用户: admin
密码:public
登录后的界面
5.设置用户名和密码登录(根据提示来就行)
二、安装MQTTX 客户端管理工具
通过这个可以模拟发送和接受消息
管网链接很详细就不赘述了,写这个主要也是把一些遇到的坑记录一下
贴一下管网使用教程:https://mqttx.app/zh/docs
三、 利用python 实现消息消费和生产
相信学过rocketmq和rabbitmqmq的人说这个上手就很快了,不太理解也没关系,会用就行。
废话不多说,开始贴代码
- 安装第三方库 paho-mqtt
好像只支持python3.7以上,所以先检查自己的python版本哈
pip install paho-mqtt
2构建生产者
# -*- coding: utf-8 -*-
#
# Author: lushiwei
# Date: 2024/2/27
import time
import random
import uuid
import paho.mqtt.client as mqtt
# MQTT Broker地址和端口
broker_address = "127.0.0.1" # 输入自己的mqtt安装的服务器
port = 1883 #默认端口是1883
# 创建MQTT客户端
client = mqtt.Client("test")
# 连接成功回调
def on_connect(client, userdata, flags, rc):
print('Connected with result code ' + str(rc))
client.subscribe('home/temperature')
# 消息接收回调
def on_message(client, userdata, msg):
print(msg.topic + " " + str(msg.payload))
# 指定回调函数
client.on_connect = on_connect
# 监听到消息的处理函数
client.on_message = on_message
# 如果设置了用户名和密码这里需要配置,没有的话就注释掉就行
client.username_pw_set(username="water", password="water")
# 连接到MQTT Broker
client.connect(broker_address, port)
# 发布和订阅循环
while True:
# 模拟温度数据
temperature = random.randint(20, 30)
# 发布温度数据到"home/temperature"主题
topic = "home/test"
client.publish("home/temperature", temperature)
print("Published temperature:", temperature)
# 发布间隔延迟
time.sleep(5)
# 处理网络通信和回调
client.loop()
运行结果:
3.构建消费者
# -*- coding: utf-8 -*-
#
# Author: lushiwei
# Date: 2024/2/27
import paho.mqtt.client as mqtt
# MQTT Broker 地址和端口
broker_address = "127.0.0.1"
port = 1883
# 订阅的主题
topic = "home/temperature"
#topic = "home/test"
import time
# 回调函数,处理接收到的消息
def on_message(client, userdata, message):
# 需要规范接收消息,并转换为需要的消息存入iotdb
print("Received message:", str(message.payload.decode("utf-8")))
# 创建 MQTT 客户端
client = mqtt.Client("subscriber")
# 设置消息接收的回调函数
client.on_message = on_message
# 连接到 MQTT Broker
client.username_pw_set(username="water", password="water")
client.connect(broker_address, port)
# 订阅主题
client.subscribe(topic)
# 循环等待消息
client.loop_forever()
def consumer(broker_address, port, topic):
# 创建 MQTT 客户端
client = mqtt.Client("subscriber")
# 设置消息接收的回调函数
client.on_message = on_message
# 连接到 MQTT Broker
client.connect(broker_address, port)
# 订阅主题
client.subscribe(topic)
# 循环等待消息
client.loop_forever()
运行结果:
通常使用mqtt来接受的都是时序数据,所以应该还会设计到存储到时序数据库中,下次分享我的iotdb时序数据库使用经验