如何检查MQTT中是否存在主题?

时间:2017-04-05 04:37:34

标签: java rabbitmq mqtt paho

我使用mosquitto MQ和eclipse paho java库。我想在订阅主题并获取消息之前检查主题是否存在。我该怎么做?

2 个答案:

答案 0 :(得分:3)

简短的回答是你没有。

在将消息发布到消息之前,主题不是真正存在的东西。

订阅者告诉经纪人他们感兴趣的主题是什么,如果发布者向其中一个主题发布消息,那么该消息将被转发给该订阅者(acls允许)。

可以对包含通配符的主题进行订阅,如果您想要匹配的不仅仅是一个主题,那么可以提供帮助。有2个外卡字符。

  • +匹配主题中的单个元素。例如foo / + / bar将匹配foo / 1 / bar和foo / something / bar

  • #匹配多个细分,但仅限于主题的末尾。例如/ foo /#将匹配/ foo / 1和foo / bar / 1 / something。你不能把它放在任何地方,但最后,所以foo /#/ bar不起作用

@ΦXocę웃Пepeúpaツ提到的$SYS主题仅提供有关经纪人的统计数据,而不是提供哪些主题。

答案 1 :(得分:1)

在经纪人中没有像浏览主题那样......

您可以获得的最多是订阅 $ sys ,但这取决于某些经纪人配置允许您这样做

关于$ Sys信息的文档是:

  • <强> $ SYS /代理/装载/字节/接收: 自代理启动以来收到的总字节数。

  • <强> $ SYS /代理/装载/字节/发送: 自代理启动以来发送的总字节数。

  • <强> $ SYS /代理/客户端/连接: 当前连接的客户端数量

  • <强> $ SYS /代理/客户端/断开: 在代理注册但当前已断开连接的持久客户端(已禁用干净会话)的总数。

  • <强> $ SYS /代理/客户端/最大: 已连接到代理的最大活动客户端数。这仅在$ SYS主题树更新时计算,因此可能不会计算短期客户端连接。

  • <强> $ SYS /代理/客户端/总: 具有当前在代理上连接和注册的持久会话的已连接和已断开连接的客户端的总数。

  • <强> $ SYS /代理/消息/接收: 自代理启动以来收到的任何类型的消息总数。

  • <强> $ SYS /代理/消息/发送: 自代理启动以来发送的任何类型的消息总数。

  • $ SYS /经纪人/消息/发布/下降: 由于飞行/排队限制而丢弃的发布消息总数。

  • <强> $ SYS /代理/消息/发布/接收: 自代理启动以来收到的PUBLISH消息总数。

  • <强> $ SYS /代理/消息/发布/发送: 自代理启动以来发送的PUBLISH消息总数。

  • <强> $ SYS /代理/消息/保留/计数: 代理上保留的已保留消息总数。

  • <强> $ SYS /代理/订阅/计数: 代理上活动的订阅总数。

  • <强> $ SYS /代理/时间: 服务器上的当前时间。

  • <强> $ SYS /代理/正常运行时间: 经纪人上线的时间(以秒为单位)。

  • <强> $ SYS /代理/版本: 经纪人的版本。静态的。