【问题标题】:how can I remove all user specific subscribed topic from broker if client is uninstalled?如果客户端已卸载,如何从代理中删除所有用户特定的订阅主题?
【发布时间】:2016-12-01 22:25:40
【问题描述】:

假设我在应用程序上安装了一个 android 应用程序,并且用户订阅了许多主题。现在如果用户卸载了应用程序

如何从代理中删除所有用户特定的订阅主题? 我可以使用 paho Java 客户端取消订阅 paho JS 客户端订阅主题吗?

在 JS 方面,这是我连接和订阅代理的方式

  client.connect({
    userName:user,
    password:password,
    onSuccess:onConnect,
    onFailure:onFailure,
    'willMessage': willMessage
  });

var onConnect = function(frame) {
  client.subscribe("user/"+clientId+"/msg");
};

【问题讨论】:

  • 我们需要更多上下文,您是否使用持久订阅?
  • 这并没有真正的帮助。您是否在连接时使用 cleanSession 标志?还是您的意思是干净的保留消息?
  • 连接时没有 cleanSession。它不是保留消息

标签: rabbitmq mqtt paho


【解决方案1】:

好的,如果您未将 cleanSession 设置为 false,则不应保留订阅。

但听起来您正在寻找类似于 mosquitto 的 persistent_client_expiration 选项的内容,该选项表示在客户端上次连接后保留此信息的时间。

不确定rabbitmq是否有类似的选项

【讨论】:

  • 如果我卸载我的客户端会发生什么?客户特定的主题会保留在代理上吗?
  • 我已经编辑了答案,因为它有一个错误,但是如果您将 cleanSession 设置为 false ,那么如果该客户端不再登录,那么给定 clientId 的订阅将永远保留。 mosquitto 选项通过在未使用的情况下将其过期来解决此问题。
  • 那么如何处理这个 cos 机会是客户端将简单地卸载应用程序并且所有订阅的主题将保留在代理中,并且它将增加代理的性能,因为会有越来越多的未使用的主题?
  • cleanSession 默认为 true 所以这应该不是问题,除非 rabbitmq 保留它们,在这种情况下你应该提出一个缺陷
猜你喜欢
  • 2019-12-21
  • 1970-01-01
  • 2020-04-26
  • 2021-09-06
  • 1970-01-01
  • 2019-10-19
  • 2012-01-17
  • 1970-01-01
  • 2020-02-23
相关资源
最近更新 更多