Ubuntu20.04云服务器——EMQX容器部署

Ubuntu20.04云服务器——EMQX部署

1. EMQX容器部署

  1. 获取Docker镜像

    sudo docker pull emqx/emqx:5.0.26
    
  2. 创建docker-compose.yml文件

    version: '3'
    services:
      emqx1:
        image: emqx:5.0.26
        container_name: emqx1
        restart: always
        ports:
          - 1883:1883
          - 8083:8083
          - 8084:8084
          - 8883:8883
          - 18083:18083 
    
  3. 通过Docker Compose创建EMQX容器

    sudo docker-compose -f docker-compose.yml up -d
    
  4. 也可以通过docker直接创建EMQX容器

    sudo docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.0.26
    
  5. web端访问emqx

    http://x.x.x.x:18083
    用户名:admin
    密码:public
    
  6. 设置新密码

  7. 点击用户管理,新建用户

    用户名:user1
    备注:用户
    密码:user1user1
    

2. 使用Python SDK连接测试

  1. 下载mqtt库

    pip install paho-mqtt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  2. 服务端示例

    # coding: UTF-8
    import time
    import paho.mqtt.client as mqtt
    import datetime
    
    
    def on_publish(msg, rc):  # 成功发布消息的操作
        if rc == 0:
            print("publish success, msg = " + msg)
    
    
    def on_connect(client, userdata, flags, rc):  # 连接后的操作 0为成功
        print("Connection returned " + str(rc))
    
    
    user = "user1"  # 用户名
    pwd = "user1user1"  # 密码
    endpoint = "x.x.x.x"  # 连接地址
    port = 1883  # 1883为服务端口号,如果是安全认证,端口号需要修改为1884
    topic = "test1"  # 发布消息主题
    
    client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))
    client = mqtt.Client(client_id)  # ClientId不能重复,所以使用当前时间
    client.username_pw_set(user, pwd)  # 设置用户名,密码
    client.connect(endpoint, port, 60)  # 连接服务 keepalive=60
    client.on_connect = on_connect  # 连接后的操作
    client.loop_start()
    time.sleep(2)
    count = 0
    
    while count < 5:  # 发布五条消息
        count = count + 1
        msg = str(datetime.datetime.now())
        rc, mid = client.publish(topic, payload=msg, qos=1)  # qos
        on_publish(msg, rc)
        time.sleep(2)
    
  3. 客户端示例

    # coding: UTF-8
    import paho.mqtt.client as mqtt
    import time
    
    
    def on_connect(client, userdata, flags, rc):
        print("Connected with result code " + str(rc))  # 打印连接状态
        client.subscribe("test1")  # 填写订阅的主题
    
    
    def on_message(client, userdata, msg):
        print(msg.topic + " " + ":" + str(msg.payload))  # 打印接受的消息
    
    
    client_id = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time()))  # 以当前时间作为client_id
    client = mqtt.Client(client_id)  # ClientId不能重复,所以使用当前时间
    client.username_pw_set("user1", "user1user1")  # 设置连接用户和密码,必须设置,否则会返回Connected with result code 4
    client.on_connect = on_connect
    client.on_message = on_message
    client.connect("x.x.x.x", 1883, 60)  # 1883为服务端口号,如果是安全认证,端口号需要修改为1884
    client.loop_forever()
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AndrewYy-chan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值