主题的建立有没有什么规则?

问题一:
刚接触了解这个物联网,也搭建起来了,但是对这个订阅发布有些问题想请教下,比如,我是给每台设备建立一个主题,让一个设备发布消息,然后另外一端订阅这个主题接收吗?
那可不可以,我只建立一个主题,所有百八十台的设备都往这主题发布消息,然后订阅只接收这一个主题的消息,这样呢?
哪种主题的建立才是比较合理的?

问题二:
因为我们是要自建应用程序的,数据展示到pc端,移动端的应用程序上,对于比如一千台设备去发布的消息,我们通过程序创建连接mqtt,去订阅主题,接收消息,然后存储数据库,那如果有很多主题,比如成千上百个,那我要通过程序怎么去订阅这么多主题接收消息?没找到实现的地方

问题三:
安装的服务端,默认是只要知道服务器的ip,都可以建立连接,发布消息,不需要用户密码,或者说随意的用户密码都可以建立连接,,这样不安全,我按照网上的他帖子,去修改了以下三个地方,然后确实是实现了需要用户和密码登录,
(1)修改 emqx.conf配置文件,将allow_annoymous=true改为false
(2)修改emqx_auth_mnesia.conf配置文件,将如下的注释放开
##auth.user.1.username = test1
##auth.user.1.password = 123456
(3)去浏览器端登陆管理端,然后去插件中将emqx_auth_mnesia启动

通过以上三步实现了需要指定的账户密码登录连接,但是当我将上面的(2)步重新加上注释后,通过test1账号仍然可以登录,重启后也可以登录,就想问问这用户密码的管理是怎么管理的,什么机制?有没有专门添加让设备连接用的用户密码的地方,怎么能让我管理一些建立一些用户密码给到设备方,他们后续连接服务器的时候必须要用我提供的用户密码验证。否则连接不了。

当我改了admin/public的密码后,改为123456,程序端,我用admin建立连接,用123456密码连接不上,这也是一个问题,

问题四:
我看你们那配置都写的2核,4G, 2节点,那我们就一台云服务器不可以搭建吗?还需要两个服务器吗?我自己电脑就搭建成功了?

  • 问题1&2: 1 对 1 主题,还是 N 对 1 取决于你的接收端是否 想要接收所有的消息。

    • 订阅者,也可以使用通配符订阅,来订阅一个主题来接收多个主题的消息 ( 例如:t/+,可以收 t/1 t/2 等主题的消息 )
  • 问题3, 是关于 MQTT 客户端的连接鉴权的。建议直接用 emqx_auth_mnesia, 关闭注释并仅通过 API 来管理用户名

    • “将上面的(2)步重新加上注释后,通过test1账号仍然可以登录,重启后也可以登录,就想问问这用户密码的管理是怎么管理的,什么机制?”
      • 这是由于 test1 已经被添加到运行的数据库里了,后面再修改配置,同名用户的优先级是比数据库中的数据低的
    • "当我改了admin/public的密码后,改为123456,程序端,我用admin建立连接,用123456密码连接不上,这也是一个问题"
      • 这个是 dashboard 或者 http-api 的用户密码,用来控制 dashboard 的登陆 和 http-api 的,不是用来控制 mqtt 连接的
  • 问题4,看你具体的压力。最简单的当然 1 台可以的。多台是为了
    - 集群能提高容错能力,比如其中一台机器异常关闭了