【问题标题】:Mqtt vernemq Create streamingMqtt vernemq 创建流式传输
【发布时间】:2020-01-21 05:44:47
【问题描述】:

我们使用 MQTT 协议在 VerneMQ 服务器上发布和订阅消息

任何人都可以在 VerneMQ 中提供帮助吗?我们可以像 Kafka 一样进行队列流式处理,如果订阅者离线,然后它又回到在线,那么它将能够获取他在离线时错过的所有旧的错过消息

如果 VerneMQ 不支持流式消息,那么除了 Kafka 之外我们还有哪些选择,哪些是好的

用户案例

这假设我有 3(A、B 和 C)客户由于某种原因订阅了相同的主题,我的 A 客户是办公室,同时发布者发布 100 条消息,而 A 是办公室,但 B 和 C 能够接收消息所以如果 A 重新上线,他能否获得发布者在离线时发布的那 100 条消息

【问题讨论】:

  • 去查找 MQTT QOS 级别和 Clean Session 标志
  • 什么时候能找到这个干净的会话标志
  • 以及流消息的时间段

标签: mqtt iot mqtt-vernemq


【解决方案1】:

MQTT 不是消息队列,它是一个发布/订阅系统。

但是你可以得到接近你描述的东西。使用高订阅者 QOS(1 或 2),您可以让代理为处于离线状态的客户端排队消息,直到它重新连接。

为此,您必须执行以下操作:

  • 为客户端使用固定的客户端 ID
  • 确保在客户端重新连接到代理时将 Clean Session 标志设置为 false。
  • 当客户端订阅主题时,它必须包含大于 0 的 QOS(使用 1 可能会导致某些消息被多次传递,2 应该只传递一次)

客户端离线时发布的所有消息都将被传递,无法从客户端获取任何窗口。根据代理的不同,可以对代理存储的内容设置字节限制或时间限制(但这超出了 MQTT 规范,这意味着数据应该永远存储)。 (从 MQTT v5 开始,消息的发布者可以设置 TTL 值,该值将在消息过期时删除)

【讨论】:

  • 好的,请告诉我,假设我有 3(A、B 和 C)客户由于某种原因订阅了相同的主题,我的 A 客户是办公室,同时发布者发布 100 条消息,而 A 是办公室但是 B 和 C 能够接收消息,所以如果 A 重新上线,他是否能够获得发布者在他离线时发布的那 100 条消息
  • 我就是这么说的
  • 告诉我如果我在使用 verneMQ 1.9.2 那么我需要做什么才能获得字节限制和时间限制或存储
  • 不知道,我没用过vernMQ,你得看文档
  • 我读到他们只建议 MQTT QOS 1 或 2 级别和 Clean Session 标志,但与时间和存储无关
猜你喜欢
  • 2018-03-28
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多