mosquitto 安装及测试

Mosquitto是一个开源(BSD许可证)的消息代理,实现MQTT(消息队列遥测传输)协议版本3.1。

MQTT(MQ Telemetry Transport),消息队列遥测传输协议,轻量级的发布/订阅协议,适用于一些条件比较苛刻的环境,进行低带宽、不可靠或间歇性的通信。值得一提的是mqtt提供三种不同质量的消息服务:

  • “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

  • “至少一次”,确保消息到达,但消息重复可能会发生。

  • “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果

下面我们进行linux环境中mosquito的安装:

1.下载mosquito安装包,并安装

mkdir /usr/local/mq
cd /usr/local/mq
wget http://mosquitto.org/files/source/mosquitto-1.4.9.tar.gz
tar -zxvf mosquitto-1.4.9.tar.gz
cd  mosquitto-1.4.9
make install
mv /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf

2、mosquito安装报错解决:

错误:./mosquitto_internal.h:27:27: error: openssl/ssl.h: No such file or directory

解决方法:yum install openssl-devel

错误:ares.h: No such file or directory

解决方法:yum install c-ares-devel

错误:g++:command not found

解决方法:

rpm -qa | grep "g++"         //先在系统中确认是否缺失相对应的包
yum whatprovides "*/g++"     //在确认系统未安装之后,查询可安装的相对应的功能的包
yum install gcc-c++-4.4.7-4.el6.x86_64  根据提供的包,选择适合系统的进行安装

错误:uuid/uuid.h: No such file or directory

解决方法:yum install libuuid-devel

错误:Error: Invalid user 'mosquitto'.

解决方法:adduser mosquitto

错误:mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory

解决方法:sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.sosquitto.conf

3、启动:

mosquitto -c /etc/mosquitto/mosquitto.conf

启动参数介绍:

-c, --config-file 从文件中加载配置文件

-d, --daemon 后台方式启动服务

-p, --port 修改监听端口,默认是1883

Listen on the port specified instead of the default 1883. This acts in addition to the port setting in the config file. May be specified multiple times to open multiple sockets listening on different ports. This socket will be bound to all network interfaces.

-v, --verbose 使用详细日志记录

Use verbose logging. This is equivalent to setting log_type to all in the configuration file. This overrides and logging options given in the configuration file.

4、测试:

运行订阅程序mosquitto_sub:

mosquitto_sub -t mqtt

开启另一个终端窗口,运行发布程序mosquitto_pub:

指定消息推送的主题,发布端用户名和消息:mosquitto_pub -t 主题 -i 发布端 -h 主机 -m 你好 *注意:如果消息中间有空格则消息要用引号括起来。

mosquitto_pub -h localhost -t test_topic -m "hello world."

5、配置文件说明:

# =================================================================
# General configuration
# =================================================================
# 客户端心跳的间隔时间
#retry_interval 20
# 系统状态的刷新时间
#sys_interval 10
# 系统资源的回收时间,0表示尽快处理
#store_clean_interval 10
# 服务进程的PID
#pid_file /var/run/mosquitto.pid
# 服务进程的系统用户
#user mosquitto
# 客户端心跳消息的最大并发数
#max_inflight_messages 10
# 客户端心跳消息缓存队列
#max_queued_messages 100
# 用于设置客户端长连接的过期时间,默认永不过期
#persistent_client_expiration
# =================================================================
# Default listener
# =================================================================
# 服务绑定的IP地址
#bind_address
# 服务绑定的端口号
#port 1883
# 允许的最大连接数,-1表示没有限制
#max_connections -1
# cafile:CA证书文件
# capath:CA证书目录
# certfile:PEM证书文件
# keyfile:PEM密钥文件
#cafile
#capath
#certfile
#keyfile
# 必须提供证书以保证数据安全性
#require_certificate false
# 若require_certificate值为true,use_identity_as_username也必须为true
#use_identity_as_username false
# 启用PSK(Pre-shared-key)支持
#psk_hint
# SSL/TSL加密算法,可以使用“openssl ciphers”命令获取
# as the output of that command.
#ciphers
# =================================================================
# Persistence
# =================================================================
# 消息自动保存的间隔时间
#autosave_interval 1800
# 消息自动保存功能的开关
#autosave_on_changes false
# 持久化功能的开关
persistence true
# 持久化DB文件
#persistence_file mosquitto.db
# 持久化DB文件目录
#persistence_location /var/lib/mosquitto/
# =================================================================
# Logging
# =================================================================
# 4种日志模式:stdout、stderr、syslog、topic
# none 则表示不记日志,此配置可以提升些许性能
log_dest none
# 选择日志的级别(可设置多项)
#log_type error
#log_type warning
#log_type notice
#log_type information
# 是否记录客户端连接信息
#connection_messages true
# 是否记录日志时间
#log_timestamp true
# =================================================================
# Security
# =================================================================
# 客户端ID的前缀限制,可用于保证安全性
#clientid_prefixes
# 允许匿名用户
#allow_anonymous true
# 用户/密码文件,默认格式:username:password
#password_file
# PSK格式密码文件,默认格式:identity:key
#psk_file
# pattern write sensor/%u/data
# ACL权限配置,常用语法如下:
# 用户限制:user <username>
# 话题限制:topic [read|write] <topic>
# 正则限制:pattern write sensor/%u/data
#acl_file
# =================================================================
# Bridges
# =================================================================
# 允许服务之间使用“桥接”模式(可用于分布式部署)
#connection <name>
#address <host>[:<port>]
#topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]
# 设置桥接的客户端ID
#clientid
# 桥接断开时,是否清除远程服务器中的消息
#cleansession false
# 是否发布桥接的状态信息
#notifications true
# 设置桥接模式下,消息将会发布到的话题地址
# $SYS/broker/connection/<clientid>/state
#notification_topic
# 设置桥接的keepalive数值
#keepalive_interval 60
# 桥接模式,目前有三种:automatic、lazy、once
#start_type automatic
# 桥接模式automatic的超时时间
#restart_timeout 30
# 桥接模式lazy的超时时间
#idle_timeout 60
# 桥接客户端的用户名
#username
# 桥接客户端的密码
#password
# bridge_cafile:桥接客户端的CA证书文件
# bridge_capath:桥接客户端的CA证书目录
# bridge_certfile:桥接客户端的PEM证书文件
# bridge_keyfile:桥接客户端的PEM密钥文件
#bridge_cafile
#bridge_capath
#bridge_certfile
#bridge_keyfile
赞.. 浏览 ..
...条评论

加载更多评论