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

Server 消息代理-“;消息已被读取;确认解决方案,server,message,mqtt,broker,Server,Message,Mqtt,Broker,我正在实现一个服务,该服务使用任意消息代理向客户端发送消息。一个用户可能有多个客户端,消息将被发送到每个客户端。一旦用户在一个客户端上读取了消息,我希望从用户的其他客户端删除该消息 消息代理是否通常实现此功能,或者我是否需要自定义解决方案 对于自定义解决方案,我认为代理可以维护一个单独的回复主题,客户机将向该主题发送一条消息,表示用户已阅读该消息。该服务可以使用此回复主题上的消息,并向用户的其他客户端发送另一条消息,通知他们删除该消息 这样的解决方案通常就是这样实现的吗 如果有帮助,我正在考虑使

我正在实现一个服务,该服务使用任意消息代理向客户端发送消息。一个用户可能有多个客户端,消息将被发送到每个客户端。一旦用户在一个客户端上读取了消息,我希望从用户的其他客户端删除该消息

消息代理是否通常实现此功能,或者我是否需要自定义解决方案

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

这样的解决方案通常就是这样实现的吗


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

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

如果我这样做的话,我会为每个用户提供两个主题,如下所示:

[用户id]/msg

[用户id]/读取

我将使传递给[user id]/msg的消息的有效负载包含消息id。然后,我将在[user id]/read主题上发布消息id。所有客户机都会同时订阅这两个消息,这样他们就可以在其他客户机上使用消息时轻松标记为已读/已删除消息


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

我非常喜欢这个想法,这似乎是合乎逻辑的,但是,订阅和发布到[user id]/read主题的所有客户端呢?这样,我就可以从我的服务器上省去更多的复杂性,并将所有这些逻辑留在代理上。但是MQTT是否允许客户端发布和订阅同一主题,而不接收它自己发布的主题上的消息?否,如果客户端订阅了主题,然后发布了同一主题上的消息,那么消息也会发送到该客户端?我可以发誓我以前见过这种功能。如果将thw消息发送给发布该消息的客户端,将是对网络资源的极大浪费