用于持久订阅的 stomp 协议常规序列

Posted

技术标签:

【中文标题】用于持久订阅的 stomp 协议常规序列【英文标题】:stomp protocol regular sequences for durable subscription 【发布时间】:2012-05-30 01:24:24 【问题描述】:

我正在使用活动 mq 实现作为 stomp 服务器/代理来使用 stomp 协议。我想要一个 stomp 客户端的消息队列,可以在客户端离线时填充,这样当客户端不时连接时,它可以获取离线时已存放的消息。

正如我所读到的,这可以通过简单订阅或持久订阅来实现。我决定持久订阅。这是正确的方法吗?

然后我想知道我应该在客户端使用哪些消息和标头。其实我正在使用以下

连接

登录: 密码: 客户端 ID:some_mac_adr

订阅

目的地:/queue/some_mac_adr 收据:收据-msg 持久订阅者名称:默认

正在等待消息

超时 -->

断开连接

这个消息顺序正确吗?此外,我没有使用取消订阅命令。这也正确吗?

【问题讨论】:

记得接受以最佳方式回答您问题的答案。 【参考方案1】:

我决定持久订阅。这是正确的方法吗?

默认情况下,队列是持久的,因此您不必显式地使消费者持久。

关于标头,正如我所说,由于您不需要使消费者持久,因此可以避免传递耐用订阅者名称标头。而且,不确定这是否是偶然的,但您不需要保持队列名称和客户端 ID 相同。

顺便说一句,您使用的是哪种语言?不同语言的 STOMP 实现应该注意合理的默认值,因此您无需担心 CONNECT、SUBSCRIBE 等的标头。

此外,我没有使用取消订阅命令。这也正确吗?

同样,unsubscribe() 对队列没有太大影响,但是当消费者完成其工作时取消订阅会更干净。

希望对你的情况有所帮助。

【讨论】:

以上是关于用于持久订阅的 stomp 协议常规序列的主要内容,如果未能解决你的问题,请参考以下文章

协议缓冲区精简版与常规协议缓冲区

常见远程调用协议

分布式WebSocket - 5SprintBoot集成STOMP协议,session权限管理

通过 websocket 发送 STOMP 帧

ActiveMQ、STOMP、Java 示例

RabbitMQ Stomp over websocket:无法检索排队的消息