【问题标题】:Why alive subscriber get only last published message为什么活着的订阅者只得到最后发布的消息
【发布时间】:2016-02-23 22:58:37
【问题描述】:

M2mqtt 合并到我的 asp.net mvc 项目中。面临同步订阅信息的问题。 当多个客户发布一个特定主题时,客户可以轻松订阅。

假设在发布时发生的一种情况,然后客户端在他还活着时关闭/离线,然后只获取最后发布的消息而不是所有已发布的消息。 怎么办?是 MQTT 的问题吗?活跃的客户端如何获取所有已发布的消息。

M2mqtt 通过以下语法使用代理连接

 public static MqttClient SmartHomeMQTT { get; set; }

  SmartHomeMQTT = new MqttClient(brokerAddress, MqttSettings.MQTT_BROKER_DEFAULT_SSL_PORT, true, new X509Certificate(Resource.ca), null, MqttSslProtocols.TLSv1_2, client_RemoteCertificateValidationCallback);
  SmartHomeMQTT.Connect("6ea592c5-4b2f-481a-bb0a-eccbe8579d14", "####", "####", false, 3600);

**注意:**clean_session 属性的连接方法参数四设置为 false 但不起作用。

【问题讨论】:

  • 看看this question,回答和cmets。尝试将 clean_session 标志设置为 false,在重新连接时使用相同的客户端 ID,使用 QoS 1 或 2 发布消息。

标签: asp.net mqtt mosquitto paho m2m


【解决方案1】:

为确保订阅者收到所有消息,即使是在离线时发布的消息(称为消息持久性),您需要做一些事情:

  1. 确保订阅者中的“清理会话”已关闭
  2. 确保每个订阅者都使用唯一的客户 ID
  3. 使用 1 或 2 的 QoS

你没有说你使用的是哪个 MQTT 服务器,但你需要确保服务器实现也支持它。

【讨论】:

  • 感谢您的回复。正如你所说,我使用了下面的语法,但它不起作用。请检查我更新的问题描述
猜你喜欢
  • 1970-01-01
  • 2012-05-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多