如果已经通过TCP保证了帧的传送,为什么STOMP协议具有ACK和NACK?

时间:2019-01-23 21:54:37

标签: stomp

STOMP似乎是用于基于套接字的通信的协议,而AFAIK套接字始终表示TCP。

如果STOMP已经确定可以在协议级别传送消息,为什么STOMP则需要ACK / NACK命令来确认消息?

https://stomp.github.io/stomp-specification-1.2.html#ACK

1 个答案:

答案 0 :(得分:1)

据我了解,STOMP ACK / NACK功能实际上与传输协议(即tcp)没有任何关系。这实际上与消息传递客户端以及它与代理的消息交互的方式有关。例如,客户端可以接收一条消息,对其进行处理,如果处理结果为“成功”,则它将对消息进行ACK。如果处理结果为“失败”,则它将否定该消息。如the spec所述,当一条消息被否定时:

  

然后,服务器可以将邮件发送到其他客户端,将其丢弃,或将其放入死信队列。

这允许消息传递应用程序处理潜在的不良消息以及使客户端发生故障的情况。

还有其他用例,但这可能是最常见且最直接的方法。