动态 版块 发帖 消息 我的
Loading...
小绿叶技术博客
小绿叶技术博客
小绿叶技术Lv149   
MQTT mqtt 消息队列 的 搭建和连接     




#!/bin/bash
# mosquitot.sh
# 搭建 emqx mqtt 服务器和 配置 上报多主题

# 客户端下载:https://mosquitto.org/files/source/
wget https://mosquitto.org/files/source/mosquitto-1.4.14.tar.gz
tar -xzvf mosquitto-1.4.14.tar.gz
cd mosquitto-1.4.14 ; mkdir build ; cd build && cmake .. && make ; cd client


mosquitto_sub -h 73e.top -t "eisc/a" -u eisc -P 000000 -i "client1"
# 订阅主题(终端)

mosquitto_pub -h 73e.top -t "eisc/a" -u eisc -P 000000 -m "Hello MQTT from mosquitto-clients"
# 发布主题


# 填写主题:Topic: eisc/a

###########################  docker 方式配置 mqtt ############################
# 参考:https://docs.emqx.com/zh/enterprise/v4.4/getting-started/install-ee.html
# 用户指南:https://docs.emqx.com/zh/enterprise/v4.4/advanced/auth.html
# 博客园:https://www.cnblogs.com/fw-qql/p/10527397.html

# 本地搭建访问地址:http://73e.top:18083/
docker pull emqx/emqx-ee:4.4.4
docker run -dit --name emqx-ee -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx-ee:4.4.4

docker exec -it emqx-ee bash

#-------- web login user configs --------#
/opt/emqx/bin/emqx_ctl admins add eisc public test
# 创建用户 eisc 备注为 test

/opt/emqx/bin/emqx_ctl admins passwd eisc 000000
# 重置eisc 的密码

/opt/emqx/bin/emqx_ctl admins del eisc
# 删除用户


# Alpine Linux 安装软件

 vi /etc/apk/repositories
# 修改为国内软件源
https://mirrors.aliyun.com/alpine/v3.6/main/
https://mirrors.aliyun.com/alpine/v3.6/community/


apk update 
# 更新

apk add mosquitto-clients
# 安装软件,卸载软件:apk del xxx  查询软件: apk search xxx

emqx_ctl subscriptions list
# 列出所有订阅

#-----------------------------  新增用户与主题发送和接收 -------------------------------#

sed -i "156 s/allow_anonymous.*/allow_anonymous=false/g" /opt/emqx/etc/emqx.conf 
# 关闭匿名登陆

echo "
auth.user.1.username=eisc                                             
auth.user.1.password=000000                                           
                                                                      
auth.user.2.username=kun                                              
auth.user.2.password=000000
" >> /opt/emqx/etc/plugins/emqx_auth_mnesia.conf
# 配置用户和密码

emqx_ctl plugins list | grep emqx_auth_mnesia
                                            # 列出所有插件,并且过滤用户模块

emqx_ctl plugins load emqx_auth_mnesia      # 加载启用插件
emqx_ctl plugins unload emqx_auth_mnesia    # 卸载停止插件
emqx_ctl plugins reload emqx_auth_mnesia    # 重载插件


emqx_ctl status                           # 查看运行状态
emqx start                                # 启动服务
emqx stop                                 # 停止服务

emqx_ctl clients list                     # 列出客户端连接
#----
username		用户名
peername		客户端 IP 与端口
clean_start		MQTT Clean Start
keepalive		MQTT KeepAlive
session_expiry_interval	会话过期间隔
subscriptions	当前订阅数量
inflight		当前正在下发的 QoS 1 和 QoS 2 的消息总数
awaiting_rel	等待客户端发送 PUBREL 的 QoS2 消息数
delivered_msgs	EMQX 向此客户端转发的消息数量 (包含重传)
enqueued_msgs	消息队列当前长度
dropped_msgs	消息队列达到最大长度后丢弃的消息数量
connected		是否在线
created_at		会话创建时间戳
connected_at	客户端连接时间戳
disconnected_at	客户端断开连接时间戳(仅当断开连接还保留会话时才会出现)
#------

emqx_ctl clients kick "clientid"
# 剔除指定客户端

emqx_ctl routes list
 # 列出所有陆游

emqx_ctl subscriptions add 'mosqsub/90475-airlee.lo' '/world' 1
 # 手动添加订阅关系


























#--------------------------- 其他储备 -----------------------------#
############################  搭建 mqtt mosquitto 服务 #############################

sudo apt-get install mosquitto
# 安装 

sudo apt-get install mosquitto-clients
# 安装客户端



#------------------------------------------
nano /etc/mosquitto/mosquitto.conf
# 写文件

pid_file /var/run/mosquitto.pid
# 这一行以软件本身为准,不要轻易修改

# 消息持久存储
persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d
# 子配置

# 禁止匿名访问
# allow_anonymous false

# 权限配置
acl_file /etc/mosquitto/aclfile

#----------------------- 结束---------------------------


touch /etc/mosquitto/pwfile
# 创建认证规则文件

#--------------------- 写文件 --------------------
sudo nano /etc/mosquitto/aclfile
# 编辑配置文件限制用户

# 李雷只能发布以test为前缀的主题,订阅以$SYS开头的主题即系统主题
user lilei
topic write test/#
topic read $SYS/#

# 韩梅梅只能订阅以test为前缀的主题
user hanmeimei
topic read test/#

# eisc 可以发布和订阅主题
user eisc
topic write test/#
topic read test/# 
#---------------------- 结束  ---------------------

sudo vi /etc/mosquitto/conf.d/myconfig.conf
# 子配置文件配置

#添加监听端口(很重要,否则只能本机访问)
listener 1883
#-------------------------------------------
# 关闭匿名访问,客户端必须使用用户名
allow_anonymous false

#指定 用户名-密码 文件
password_file /etc/mosquitto/pwfile.txt
#--------------------------------------------


 sudo mosquitto_passwd -c /etc/mosquitto/pwfile.txt lilei
 sudo mosquitto_passwd -c /etc/mosquitto/pwfile.txt hanmeimei
 sudo mosquitto_passwd -c /etc/mosquitto/pwfile.txt eisc
# 生成账户 lilei 和密码到指定文件


sudo systemctl restart mosquitto.service 
# 重新启动服务

sudo systemctl status mosquitto.service 
# 查看状态














 1  已被阅读了103次  楼主 2022-07-01 12:32:57
回复列表
admin
2F
小绿叶技术Lv149   
c 语言编写客户端和 发布端: https://www.cnblogs.com/jzcn/p/15252983.html
 0   2022-07-01 16:14:51  回复

回复:MQTT mqtt 消息队列 的 搭建和连接

guest
登录之后更精彩~
Powered by HadSky 7.7.16
© 2015-2022 PuYueTian
您的IP:8.219.134.200,2022-08-10 06:00:57,Processed in 0.01472 second(s).
Powered by HadSky
小绿叶技术博客