消息代理 - “消息已被读取”确认解决方案

时间:2015-06-05 13:26:02

标签: server message mqtt broker

我正在实现一个使用任意消息代理将消息分派给客户端的服务。单个用户可能有多个客户端,并且将将消息分派给每个客户端。一旦用户在一个客户端上阅读了该消息,我希望从该用户的其他客户端删除该消息。

消息代理通常会实现此功能,还是需要自定义解决方案?

对于自定义解决方案,我认为代理可以维护一个单独的回复主题,客户端将向其发送消息,说明用户已阅读该消息。该服务可以使用此回复主题上的消息,并将另一条消息发送给用户的其他客户端,告知他们删除该消息。

这通常是如何实施这样的解决方案吗?

如果有帮助,我正在考虑使用MQTT作为消息协议。

1 个答案:

答案 0 :(得分:2)

在MQTT协议 1 中没有甚至端到端消息传递通知的概念,更不用说读取通知了。您可能需要实现这一点。

如果我这样做,我会为每个用户提供2个主题:

[用户ID] / msg

[用户ID] /读取

我会将传递给 [user id] / msg 的消息的有效负载包含消息ID。然后,我会在 [用户ID] /读取主题上发布消息ID。所有客户都会订阅这两种方式,这样他们就可以轻松地标记为读取/删除消息,就像在其他客户端上消费一样。

1 确认更高的QOS级别在发布者和经纪人之间,然后在经纪人和订阅者之间