EMQX 服务器搭建 & 使用python生产消费

EMQX 服务器搭建 & 使用python生产消费

一、EMQX 服务器搭建

  1. 进入下载链接https://www.emqx.io/zh/downloads?os=Ubuntu 我使用的是ubuntu
  2. 选择合适的版本下载

在这里插入图片描述

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的人说这个上手就很快了,不太理解也没关系,会用就行。

废话不多说,开始贴代码

  1. 安装第三方库 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时序数据库使用经验

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Afraidlight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值