Первоначальная MQTT служба

Получение MQTT

концепция

MQTT очереди сообщений Телеметрия средств транспорта, является мгновенным протокол обмена сообщениями, разработанный IBM. Из-за свою долгую связь, чтобы поддерживать легкий низкий расход известный, поэтому широко используются в развитии службы обмена сообщений мобильного конца нажимной.

формат протокола

MQTT формат пакет протокола управление состоит из трех частей:
фиксированный заголовок и переменного заголовка и полезной нагрузки, в котором заголовок пакета фиксируются для всех управляющих пакетами является переменным заголовком и полезной нагрузки является частью пакетов управления.
MQTT является двоичным протоколом, поле управления с точностью до бита уровня, это само по себе достаточно для места в области вещей. MQTT не поддерживается субконтрактации и других механизмов, не подходит для большого количества пакетов конкретных прикладных сценариев.

свойства MQTT

  • Использование публикации / подписки модели обмена сообщений, обеспечивая много выпуска новостей;
  • Загрузить содержимое маски передачи сообщений;
  • Использование TCP / IP подключения к сети;
  • Качество пресс-релизе службы есть три варианта:
  • 1. «в самый раз», как правило, приложение толчок с использованием этой модели, то есть, если мобильное устройство, когда нет новостей толчок сети, то сеть снова не будет получать уведомления;
  • 2. «по крайней мере один раз», вы можете убедиться в том, что сообщение получено, но сообщение может повторяться;
  • 3. «только один раз», чтобы гарантировать, что сообщение достигает один раз, например, биллинговые системы, если сообщение будет потерян или заставить систему повторить результат не правильные вопросы.
  • Малые накладные расходы передачи малы, сводя к минимуму обмена протокола, с тем чтобы уменьшить сетевой трафик;
  • механизм уведомления заинтересованные стороны клиента прервана.

Реализация протокола MQTT

发布者----发布消息---->代理-------推送消息----->订阅者
发布者----发布消息---->代理<------订阅消息-----订阅者

Есть три состояния в MQTT договора:

  • Издатель (опубликовать): издатель, это клиент, вы можете отправлять сообщения
  • Агент (брокер): прокси-сервер относится к более известным является emqtt, ток может быть другой зрелой средой для создания MQTT службы
  • Подписчики (подписаться): относится к клиенту, но издатель, но может также быть подписчиками.

серверные и клиентские функции MQTT реализованы

сервер MQTT
  • Получение сетевого соединения от клиента;
  • Принятие Заказчика применения информации, опубликованной;
  • Обработка конца тема подписаться и отписаться запросы от клиентов;
  • Пересылка сообщений приложений для клиентов с подпиской

    MQTT клиент
  • Другие клиенты подписаться на пресс-релиз;
  • Подписаться на новости, опубликованные другими клиентами;
  • Подписаться и отписаться темы;
  • Отключение от сервера

Протокол Метод MQTT

  • подключения: ожидание сервера для установления соединения;
  • разъединение: ожидание клиента, чтобы завершить работу, и TCP / IP сеанс с сервером отсоединен;
  • Подписка на новости: Подписаться на тему;
  • отказаться от подписки: отказаться от подписки темы;
  • опубликовать: отправить сообщение

установка MQTT

# sudo yum install epel-release
# sudo yum install mosquitto mosquitto-clients
# sudo systemctl start mosquitto
mqtt默认是以1883端口运行的

MQTT простой в использовании

mosquitto的配置文件为/etc/mosquitto/mosquitto.conf/
1.添加密码配置并且不允许匿名用户登录
# sudo vim /etc/mosquitto/mosquitto.conf
allow_anonymous false  #不允许匿名登录
password_file /etc/mosquitto/pwfile  #配置用户密码文件
acl_file /etc/mosquitto/aclfile  # 配置topic和用户

2.添加用户信息
# mosquitto_passwd -c /etc/mosquitto/pwfile ceshi
# mosquitto_passwd /etc/mosquitto/pwfile ceshi2
分别添加用户ceshi和ceshi2

3.添加topic和用户的关系(权限配置)
# sudo vim /etc/mosquitto/aclfile
# ceshi只能发布V222为前缀的主题,订阅V333开头的主题
user ceshi
topic write V222/#
topic read V333/#
# ceshi2只能订阅以V222为前缀的主题
user ceshi2
topic read V222/#

- write:发布订阅
- read:接受订阅

4.启动
-c :指定配置文件启动
-d: 后台运行
mosquitto -c /etc/mosquitto/mosquitto.conf -d 

5.测试
发布订阅:mosquitto_pub
接受订阅:mosquitto_sub
参数:
-h :服务器主机
-t :指定主题
-u :用户名
-P : 密码
-i :客户端id
-m :发布的消息内容

# mosquitto_sub -h localhost -t "V222" -u ceshi2 -P 123456

# mosquitto_pub -h localhost -t "V222" -m "Hello world" -u ceshi -P 123455
Файл конфигурации разбор
# 系统状态的刷新时间
# 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

# 服务绑定的IP地址
# bind_address

# 服务绑定的端口
# port 1883

# 消息自动保存的间隔时间
# autosave_interval 1800

# 消息自动保存功能的开关
# autosave_on_changes false

# 持久化功能的开关
# persistence true

# 持久化DB文件
# persistence_file mosquitto.db

# 持久化DB文件目录
# persistence_location /var/lib/mosquitto/

# 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

# 允许匿名用户
# allow_anonymous false

# 用户/密码文件,默认格式为:user/passwd
# password_file /etc/mosquitto/passwd

рекомендация

отwww.cnblogs.com/l-mac/p/11486539.html