代码之家  ›  专栏  ›  技术社区  ›  Dojo

对MOSQUITO MQTT服务器进行分区

  •  0
  • Dojo  · 技术社区  · 6 年前

    我希望在单个MQTT服务器上创建隔离环境。与数据库服务器一样,服务器可以有多个模式,表名可以在不同的模式中重复。我希望有一个“MQTT模式”,其中一个模式中的主题/订阅与另一个“MQTT模式”中的主题/订阅隔离,以便相同的主题可以在不同的模式中使用。如果可以在每个模式的基础上应用安全性,那会更好,但这需要很多。现在,我只是在寻找一种在同一台服务器上拥有隔离环境的方法——可能每个模式都需要一个单独的TCP端口来识别连接客户机的目标模式,因为协议本身没有任何模式概念。或者,客户机可以基于用户名或客户机ID映射到特定的模式。

    注意:我知道如何使用ACL限制每个用户对主题的访问。ACL不能解决这个问题。我不想简单地限制主题访问,我想创建一个单独的环境,在这个环境中,用户可以自由地对主题做自己想做的事情,而不需要我告诉他们不能使用的主题名称等等。

    2 回复  |  直到 6 年前
        1
  •  2
  •   hardillb    6 年前

    另一个选择是 mount_point 配置选项,可与 listener 声明(人) page

    山角

    此选项与侦听器选项一起用于隔离客户端组。当客户端连接到使用此选项的侦听器时, 客户将任何消息发送到时,此前缀将被删除 客户这意味着客户端连接到具有装入点的侦听器 示例只能查看主题中发布的消息 层次结构示例及以上。

    这个选项与另一个选项(docker容器)之间的区别在于,您可以使用侦听器声明来查看所有不同分区的所有流量,方法是使用一个没有装入点的侦听器。

        2
  •  0
  •   hardillb    6 年前

    只需使用一个运行mosquitto的docker容器,并为每个容器创建新实例 模式 . 将每个实例映射到单独的外部端口。完全隔离,如果包括auth插件,则可以将安全性映射到每个插件的单独db表 使用环境变量