MQTT消息服务器mosquitto介绍及说明

发布于:2024-12-18 ⋅ 阅读:(4) ⋅ 点赞:(0)

        Mosquitto是一个开源的消息代理软件,支持MQTT协议(消息队列遥测传输协议)。MQTT是一种轻量级的发布/订阅消息传输协议,专为低带宽、不可靠网络环境下的物联网设备通信而设计。以下是关于Mosquitto服务器的一些介绍和说明:

1.基本功能

  • 消息代理:Mosquitto作为MQTT代理,负责接收和分发消息。客户端可以通过它订阅主题并接收消息,或者向主题发布消息。
  • 轻量级:Mosquitto非常轻量级,适合嵌入式设备和资源受限的环境。
  • 支持QoS等级:支持MQTT协议中的质量服务等级(QoS)0、1和2,确保消息可靠性。

2.安装与配置

  • 跨平台支持:可在Linux、Windows、macOS等多个平台上运行。
  • 安装:在Linux上可以通过包管理器(如 aptyum)安装,在Windows和macOS上可以通过下载预编译的二进制文件或通过Homebrew安装。
  • 配置文件:Mosquitto的行为可以通过配置文件进行自定义,比如监听端口、安全认证、日志记录等。

        在windows上安装的时候,通过下载编译好的exe安装包,双击点击安装即可,就和普通安软件一样无差别,安装文件链接我在下面有分享,记录好安装路径,将该路径添加到系统路径下即可,然后启动的时候,直接在命令行运行mosquitto,命令即可,不报错就表示启动成功了。我的安装后的添加路径如下:

 启动如下:

配置可以选择默认的本机,也可以使用自己预设的端口及IP. 配置好之后就可以进行测试了。

首先,需要确保安装了 paho-mqtt 库。你可以使用 pip 进行安装:

pip install paho-mqtt

测试代码如下:

import json
import paho.mqtt.client as mqtt

# MQTT 服务器配置
MQTT_BROKER = "localhost"   # 服务器地址,如果 Mosquitto 运行在本地
MQTT_PORT = 1883            # 默认 MQTT 端口
MQTT_TOPIC = "your/topic"   # 你要发布的主题

# 要发送的字典数据
data = {
    "temperature": 25.5,
    "humidity": 60,
    "status": "OK"
}

# 将字典转换为 JSON 字符串
payload = json.dumps(data)

# 回调函数:连接成功时调用
def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("连接到 MQTT 代理服务器成功")
    else:
        print(f"连接失败,错误码 {rc}")

# 回调函数:发布消息后的回调
def on_publish(client, userdata, mid):
    print(f"消息已发布,消息 ID: {mid}")

def main():
    # 创建 MQTT 客户端实例
    client = mqtt.Client()

    # 设置回调函数
    client.on_connect = on_connect
    client.on_publish = on_publish

    try:
        # 连接到 MQTT 代理服务器
        client.connect(MQTT_BROKER, MQTT_PORT, 60)

        # 启动网络循环(非阻塞)
        client.loop_start()

        # 发布消息
        result = client.publish(MQTT_TOPIC, payload)

        # 等待发布完成
        status = result[0]
        if status == 0:
            print(f"成功发布消息到主题 `{MQTT_TOPIC}`")
        else:
            print(f"发送消息失败,状态码 {status}")

    except Exception as e:
        print(f"发生错误: {e}")
    finally:
        # 停止网络循环并断开连接
        client.loop_stop()
        client.disconnect()

if __name__ == "__main__":
    main()

代码说明

1.导入必要的库
json:用于将字典转换为 JSON 字符串。
paho.mqtt.client:用于 MQTT 通信。

2.配置 MQTT 服务器信息
MQTT_BROKER:MQTT 代理服务器地址,通常为 localhost 如果 Mosquitto 运行在本地。
MQTT_PORT:MQTT 端口,默认是 1883
MQTT_TOPIC:发布消息的主题,可以根据需要修改。

3.准备要发送的数据
- 创建一个字典 data,包含需要发送的数据。
- 使用 json.dumps() 将字典序列化为 JSON 字符串 payload

4.定义回调函数
on_connect:处理连接服务器的响应。
on_publish:确认消息发布后的响应。

5.主函数 main()
- 创建 MQTT 客户端实例并设置回调函数。
- 连接到 MQTT 代理服务器。
- 启动网络循环 client.loop_start(),使客户端能够处理网络流量(非阻塞模式)。
- 使用 client.publish() 发布消息到指定主题。
- 根据发布结果打印相应的信息。
- 最后,停止网络循环并断开连接。

运行代码

        确保 Mosquitto 服务器正在运行。你可以在终端中运行以下命令启动 Mosquitto(如果尚未启动):

mosquitto

然后运行上面的 Python 脚本:

python your_script.py

如果一切设置正确,你应该会看到类似如下的输出:

连接到 MQTT 代理服务器成功
成功发布消息到主题 `your/topic`
消息已发布,消息 ID: 1

订阅主题以验证消息

你可以打开另一个终端,使用 mosquitto_sub 命令订阅主题,验证消息是否成功发送:

mosquitto_sub -h localhost -t your/topic

发布消息后,订阅端应显示发送的 JSON 数据:

{"temperature": 25.5, "humidity": 60, "status": "OK"}

 

额外提示

  • 身份验证:如果你的 Mosquitto 服务器配置了用户名和密码,请在连接时提供:
    client.username_pw_set("your_username", "your_password")
    
  • 安全连接:如果需要使用 TLS/SSL,请相应配置:
    client.tls_set(ca_certs="path/to/ca.crt")
    
  • 错误处理:生产环境中建议添加更完善的错误处理和重试机制。

3.安全特性

  • TLS/SSL支持:支持TLS/SSL加密,确保消息在传输过程中的安全性。
  • 认证和授权:支持用户名和密码认证,以及基于ACL(访问控制列表)的访问控制。

4.性能

  • Mosquitto能够处理大量的并发客户端连接,性能良好,适合大规模物联网部署。

5.使用场景

  • 物联网:用于物联网设备之间的信息传递,如智能家居、工业自动化等。
  • 消息通知系统:可以用于实时消息推送系统,支持多客户端的实时通信。
  • 移动应用:适合移动应用之间的低延迟消息传递。

6.常用命令

  • 启动Mosquitto服务:mosquitto -c /path/to/mosquitto.conf
  • 订阅主题:mosquitto_sub -h localhost -t test/topic
  • 发布消息:mosquitto_pub -h localhost -t test/topic -m "Hello, World!"

7.社区与支持

  • Mosquitto有活跃的开发社区,提供文档、论坛和支持,以帮助用户解决问题。

Mosquitto作为MQTT协议的一个实现,因其高效、稳定和易于使用而被广泛应用于物联网领域。

8.下载链接

        windows版本的服务器可以去我的CSDN上下载,(mosquitto-1.6.13-install-windows-x64)下载的链接如下:

https://download.csdn.net/download/mzl_18353516147/90089326?spm=1001.2014.3001.5503


网站公告

今日签到

点亮在社区的每一天
去签到