披萨盒子

vernemq 入门指南

2019-11-05  本文已影响0人  秒单

vernemq 是基于erlang的MQTT 服务器(broker)

与emqx的对比

之前尝试使用过国人开发的emqx,emqx做得很强大,功能丰富。但是由于免费版的离线消息无法持久化,所以选择了vernemq。

emqx对于消息持久化在 架构设计中有解析。 emqx的文档很丰富,无论是否使用都推荐看一遍。

vernemq的文档相比就显得过于简单,但是简单又简单的好处,它会营造出一种使用简单的感觉。

不过如果真的要用起来, 还是要自己google一些东西,特别是第一次接触MQTT的用户。

关于持久化的简单解析, 就是消息会保存到磁盘中,如果没有持久化, 重启程序将会失去消息记录。 很明显自带持久化的vernemq初始使用会省心很多。

权限配置

查看官方安装教程

权限配置是broker的一个关键,不同业务场景需要使用自己的配置方式,甚至安装数据库插件来通过表数据读取验证。
以下是我独立运营的一款产品的实际配置方案, 提供大家参考。

场景介绍

  1. 每个设备有一个uuid, 任何人可以订阅该uuid的消息。
  2. 只有通过服务器接口才能发布消息

这个场景是一个典型的单向数据流, 由于设备频道是开放订阅的, 但是发送数据到频道却需要经过业务服务器。

开启游客模式

/etc/vernemq/vernemq.conf

allow_anonymous = on 

/etc/vernemq/vmq.acl

# ACL for anonymous clients
topic read public/+/print


user pisahub
topic write public/+/print

注意vmq.acl文件中, 第一行是游客权限,表示可以订阅 public/***/print 频道。

user pisahub 表示接下来的是用户pisahub的权限, 就是发布消息到 public/***/print 频道。

客户端订阅消息

要实现消息下发后, 小票机无论开不开机, 都能在重新联网是补打所有小票。 需要

  1. qos 1 或 2
  2. 固定 clientId
  3. cleanSession false

这是利用mqtt协议实现消息下发,补发需要做的。

至于代码实现根据每个语言不通的客户端自行实现。

服务器端开放接口,发布消息

更多实现请参考 披萨盒子 里面的文档说明。

披萨盒子是一个开源的开放云打印服务。 帮助零售系统实现云打印, 适合基于小程序等创新模式的零售系统。

上一篇下一篇

猜你喜欢

热点阅读