跳到主要内容

防止订阅导出

在MNR(多播邻居发现)或DMR(单播邻居发现)网络中,本地节点会将订阅广告给网络中的其他节点。这允许本地节点上的客户端接收到源自其他节点且匹配其主题订阅的消息。

#noexport语法允许您指定个别订阅不应该被导出,即使整个消息VPN的订阅正在被导出。这可以阻止在远程节点上发布的消息被吸引到本地节点上的订阅者。

#noexport语法仅适用于订阅,并且不支持缓存请求。

如果订阅用#noexport修饰:

  • 它只吸引在同一个代理上本地发布的消息,订阅者所在的代理。它不会被MNR或DMR广告给相邻节点。
  • 即使整个消息VPN的订阅正在被导出(即,如果消息VPN的export-policy设置为export-subscriptions),它也不会被导出到其他节点。

您可以在共享和非共享订阅中使用#noexport

  • #noexport/#share/ShareName/topicFilter指定了一个非导出的共享订阅,其中ShareName是共享订阅标识符,topicFilter是主题过滤器。
  • #noexport/topicFilter指定了一个非导出的主题订阅。

即使在订阅上指定了#noexport,如果其他导出的订阅吸引了那些消息到本地代理,本地节点仍然可以接收到源自其他代理且主题匹配该订阅的消息。

例如,假设客户端C1订阅了#noexport/a/b,同一代理上的另一个客户端C2订阅了a/b。在这种情况下,发布在另一个代理上的主题为a/b的消息仍然会被C1接收。下图展示了这一点:

img

有关更多信息,请参见:

  • 启用订阅导出
  • 保留主题