[移动] Mosquitto简要教程(安装/使用/测试)

article/2025/10/23 0:18:15
上篇文章《 Android主流推送方案分析(MQTT/XMPP/GCM)》中,我们给大家介绍了,如何在移动领域使用灵巧的消息传输协议MQTT来完成消息推送,最后也提到了开源项目Mosquitto。实际上,Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案。本文的主旨在于记录Mosquitto服务的安装和使用,以备日后查阅。

1、获取&安装

Mosquitto提供了Windows、Linux以及qnx系统的版本,安装文件可从 http://mosquitto.org/files/binary/地址中获取(建议使用最新的1.1.x版本)。Windows系统下的安装过程非常简单,我们甚至可以把Mosquitto直接安装成为系统服务;但是,在实际应用中,我们更倾向于使用Linux系统的服务器,接下来我们就将重点介绍Linux版Mosquitto的安装方法。

在Linux系统上安装Mosquitto,本人建议大家使用源码安装模式,最新的源码可从 http://mosquitto.org/files/source/地址中获取。解压之后,我们可以在源码目录里面找到主要的配置文件config.mk,其中包含了所有Mosquitto的安装选项,详细的参数说明如下:
# 是否支持tcpd/libwrap功能.
#WITH_WRAP:=yes# 是否开启SSL/TLS支持
#WITH_TLS:=yes# 是否开启TLS/PSK支持
#WITH_TLS_PSK:=yes# Comment out to disable client client threading support.
#WITH_THREADING:=yes# 是否使用严格的协议版本(老版本兼容会有点问题)
#WITH_STRICT_PROTOCOL:=yes# 是否开启桥接模式
#WITH_BRIDGE:=yes# 是否开启持久化功能
#WITH_PERSISTENCE:=yes# 是否监控运行状态
#WITH_MEMORY_TRACKING:=yes
这里需要注意的是,默认情况下Mosquitto的安装需要OpenSSL的支持;如果不需要SSL,则需要关闭config.mk里面的某些与SSL功能有关的选项(WITH_TLS、WITH_TLS_PSK)。接着,就是运行make install进行安装,完成之后会在系统命令行里发现mosquitto、mosquitto_passwd、mosquitto_pub和mosquitto_sub四个工具(截图如下),分别用于启动代理、管理密码、发布消息和订阅消息。



2、配置&运行

安装完成之后,所有配置文件会被放置于/etc/mosquitto/目录下,其中最重要的就是Mosquitto的配置文件,即mosquitto.conf,以下是详细的配置参数说明。
# =================================================================
# 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# 自己的配置可以放到以下目录中
include_dir /etc/mosquitto/conf.d
最后,启动Mosquitto服务很简单,直接运行命令行“ mosquitto -c /etc/mosquitto/mosquitto.conf -d”即可开启服务。接下来,就让我们尽情体验Mosquitto的强大功能吧!当然,有了Mosquitto,我们就可以安心地抛弃“简陋”的rsmb了,有兴趣的话,大家还可以尝试把Mosquitto服务运用到上一篇的Android推送服务中。

另外,Mosquitto是个异步IO框架,经测试可以轻松处理20000个以上的客户端连接。当然,实际的最大承载量还和业务的复杂度还有比较大的关系。下图是本人在一台普通Linux机器上进行的压力测试结果,大家可以参考。



友情提醒:测试的时候不要忘记调整系统的最大连接数和栈大小,比如:Linux上可用ulimit -n20000 -s512命令设置你需要的系统参数。

http://chatgpt.dhexx.cn/article/BfSvfglO.shtml

相关文章

MQTT Broker mosquito配置以及使用tls证书登录附上Python调用代码

MQTT Broker mosquito配置以及使用tls证书登录 文章目录 MQTT Broker mosquito配置以及使用tls证书登录1. 前言2. 安装3. mosquito相关命令3.1 运行停止查看状态3.2 创建可以登录mosquito的用户3.3 配置权限规则文件3.4 配置mosquito3.5 使用mosquito_pub和mosquito_sub测试3.5…

Mosquitto安装及使用

本文简要介绍MQTT服务器mosquitto的安装以及最基本的使用。 第一步&#xff0c; 下载 我的ubuntu是16.4 64bit的虚拟机&#xff0c; mosquitto-1.5.tar.gz 从https://mosquitto.org/download/下载。 第二步 编译和安装 我们先解压&#xff0c;然后执行make&#xff0c; mak…

Mosquitto安装及使用简介

1、源码下载&#xff1a; &#xff08;1&#xff09;官方源码下载&#xff1a;http://mosquitto.org/files/source/ &#xff08;2&#xff09;性能优化版源码下载&#xff1a;https://github.com/houjixin/mosquitto-1.4.11-opt &#xff08;3&#xff09;性能优化版优化方…

SQL--数据查询

特别提示&#xff1a;图片有水印&#xff0c;请不要直接使用 pcshop——Oracle版本 CREATE TABLE customers ( customer_id varchar2(10) NOT NULL, firstname varchar2(32) default NULL, lastname varchar2(32) default NULL, city varchar2(32) default NULL, address var…

SQL查询优化

SQL查询优化 一、获取有性能问题SQL的三种方法 通过用户反馈获取存在性能问题的SQL 通过慢查询日志获取存在性能问题的SQL 实时获取存在性能问题的SQL 二、慢查询日志介绍 1、使用慢查询日志获取有性能问题的SQL (1) 参数配置 slow_query_log 启动停止记录慢查询日志 .…

sql查询排序

查询排序 如果需要针对查询后的结果&#xff0c;按照指定的数据列进行排序操作&#xff0c;就必须使用ORDER BY 默认排序&#xff1a;按照数据的插入顺序。 select * from emp;观察 语法格式 【3控制要显示的数据列】SELECT[DISTINCT]*|列名称[别名]&#xff0c;列名称[别名…

SQL 查询数据

数据库表是存储数据库中所有数据的对象。 在表中&#xff0c;数据按行和列格式逻辑组织&#xff0c;类似于电子表格 (Excel) 在表中&#xff0c;每行代表一个唯一记录&#xff0c;每列代表记录中的一个字段。 例如&#xff0c; SC表包含学生成绩数据&#xff0c;如学生标识号&a…

SQL之查询

因为同一SQL语句&#xff0c;不同厂商有不同的实现方式&#xff0c;因此同一SQL语句不一定在所有的数据库编辑器上能够正确运行&#xff0c;这里采用的是华为的openGauss。 基本格式为&#xff1a; SELECT desired attributes FROM one or more tables WHERE condition about…

SQL查询与操作

1.单表查询 SQL 数据查询主要由 SELECT 语句完成&#xff0c;SELECT 语句是SQL 的核心。单表查询就是利用 SELECT语句仅从一个表/视图中查询数据。其语法如下: SELECT [DISTINCT]*{ 字段名 1&#xff0c;字段名 2&#xff0c; 字段名 3,… FROM 表名 [WHERE 条件表达式 1] [GR…

sql的查询

sql的查询 &#xff08;1&#xff09;什么是排序 order by&#xff08;2&#xff09;如何排序 》》数据库的查询(排序:order by) SELECT * FROM 表名 ORDER BY 排序字段 ASC(升序)|DESC(降序);&#xff08;3&#xff09;特点 指定列 指定升序或者降序 order by 排序只对数字和…

SQL 数据查询

前言&#xff0c;数据库中有5个表&#xff0c;student&#xff0c;sc,course,tc,teacher;(sql server里面不区分大小写) student sc tc course teacher 1. 查询软件工程学院&#xff08;SE&#xff09;学生的学…

SQL数据查询

目录 1、求各系学生的平均成绩&#xff0c;并把结果存入新建的数据库表中&#xff08;请自己创建一个表存放结果&#xff09; 2、统计每门课程的选修学生人数及各门课程的平均成绩 3、找出各系年龄最大的学生&#xff0c;显示其学号、姓名&#xff1b;&#xff08;利用相关子…

数据库:SQL数据查询(详细、全面)

以下题目中加粗字体为重点哦~ 一、查询指定列、全部列 1.查询全体学生的学号和姓名 SELECT SNO, SN FROM S 2.查询全部列 SELECT * FROM S 二、查询经过计算的值 3. 查询全体学生的姓名、出生年份 SELECT SN, 2020-AGE FROM S 4. 查村全体学生的姓名、出生年份和系名&#xff…

2022留学生落户上海成本大概是怎样的?

现在留学生落户上海整体来说除了对于社保没有要求的落户方式&#xff0c;那么对于普通的留学生落户来说&#xff0c;就得有社保和个税的要求了&#xff0c;那么这里面的成本是有多少呢&#xff0c;下面来看看这里面的情况&#xff1a; 留学生落户上海根据判断自己的社保基数及累…

非上海户籍人员在上海买房需要啥条件?

和你一起终身学习&#xff0c;这里是程序员Android 非沪籍想在上海买房说实话有点难&#xff0c;毕竟每平米大几万的房价不是盖的&#xff0c;既然您点进来看了&#xff0c;说明你有这个想法&#xff0c;有想法就行&#xff0c;虽然我们不一定能买得起&#xff0c;但不能阻挡我…

上海落户计算机水平毕业研究生,2021上海积分落户应届毕业生直接落户上海

原标题&#xff1a;2021上海积分落户应届毕业生直接落户上海 ——上海落户积分120分&#xff0c;不是研究生毕业就有100分吗&#xff1f;研究生毕业就有100分&#xff0c;正常读书年龄肯定很小就有30分了啊&#xff0c;不是直接就可以落户了吗&#xff1f;为什么大家都在说很难…

上海居住证转户口证攻略

2019独角兽企业重金招聘Python工程师标准>>> 一、居转户条件&#xff1a; 1.居住证满7年&#xff0c;社保满7年&#xff0c;税单满7年 2.最近3年连续社保是上海平均值2倍以上&#xff08;或者具备中级以上职称&#xff09; 3.自有产权房 二、居转户材料&#x…

2019非上海生源高校应届生落户指南

流程 一、计算积分基本要素导向要素用人单位要素 二、准备申请材料三、审核--证明信四、证明信-个人户口本落户社区公共户落户家庭户或者单位集体户口落户家庭户落户单位集体户口 博主从五月份准备落户申请材料&#xff0c;到十月中旬拿到上海个人户口本&#xff0c;历时五个月…

上海程序员落户攻略

上海居住证落户简称 “居转户” &#xff0c; 本文主要写给在上海打拼的程序员们&#xff0c;告诉大家比写代码更重要的一件事情是落户。讲述一些关于上海居住证落户的一些政策和一些建议。 很多人以为居转户&#xff0c;只要上海居住证满7年就可以转了&#xff0c;殊不知&…

上海落户计算机水平毕业研究生,2020年上海落户有哪些新规定?附研究生落户分值表!...

相信对于不少的年轻人来说&#xff0c;上海都是他们向往的城市&#xff0c;很多毕业生都在毕业后都希望可以留在上海&#xff0c;如果能够落户就再好不过了。下面小编就给大家说说2020年上海落户有哪些新规定&#xff0c;研究生如何落户&#xff0c;想了解的快来看看吧。 一、2…