【发布时间】:2020-10-24 02:03:37
【问题描述】:
我正在使用stomp-client 库,我想知道是否可以知道消息是否已传递到队列。因为我实现了一个 java 服务来执行消息的出队和一个节点 js 来将消息发送到队列。下面的代码显示了我如何将消息发送到队列。
this._stompClient.publish('/queue/MessagesQueue', messageToPublish, { })
【问题讨论】:
我正在使用stomp-client 库,我想知道是否可以知道消息是否已传递到队列。因为我实现了一个 java 服务来执行消息的出队和一个节点 js 来将消息发送到队列。下面的代码显示了我如何将消息发送到队列。
this._stompClient.publish('/queue/MessagesQueue', messageToPublish, { })
【问题讨论】:
当您发送SEND 帧(即发布消息)时,您可以添加receipt 标头,然后当您从代理收到RECEIPT 帧时,您就知道它已成功接收到消息。 STOMP specification 说明了 receipt 标头:
除
CONNECT之外的任何客户端框架都可以指定具有任意值的receipt标头。这将导致服务器确认收到带有RECEIPT帧的帧,该帧包含此标头的值作为RECEIPT帧中receipt-id标头的值。
但是,查看stomp-client 的文档,我没有看到任何关于如何接收RECEIPT 帧的信息。我实际上希望能够在收到RECEIPT 帧时调用的publish 方法上指定回调。 stomp-client 似乎不支持使用收据。不幸的是,这意味着没有真正的方法来确认代理是否收到了消息。
【讨论】: