我可以存储和读取来自 STOMP 队列/主题的消息吗?

Posted

技术标签:

【中文标题】我可以存储和读取来自 STOMP 队列/主题的消息吗?【英文标题】:Can i store and read messages from STOMP queue/topic? 【发布时间】:2016-03-29 20:59:58 【问题描述】:

我已经设置了一个简单的 Spring 应用程序,它连接到一个正在运行的 HornetQ 实例并将一系列消息发送到一个预定义的队列。问题是客户端(HornetQ 附带的简单 websocket 客户端)只有在它已经订阅队列时才接收消息。 有没有办法将消息存储在 STOMP 队列中,然后在与消费者连接时读取它们?

我查看了 HornetQ 和 Stomp 文档,但由于我真的不知道我在寻找什么,我只找到了“保留”标头,它似乎是 ActiveMQ 专有的,并且只保留最后一条消息在主题中。

【问题讨论】:

【参考方案1】:

似乎 HornetQ 支持所有与 ActiveMQ 相同的标头,但在文档中没有提及。 所以,这是我必须指定的标题:

destination:<my-queue>
id:<some-id>
durable:true //this enables durability
auto-delete:false //this ensures queue won't get deleted

将这些标头传递给 StompSession session.send(),它就像一个魅力。消费者方面不需要进行额外的更改。

【讨论】:

以上是关于我可以存储和读取来自 STOMP 队列/主题的消息吗?的主要内容,如果未能解决你的问题,请参考以下文章

作为客户端,如何获取 Stomp 队列或/和主题(它们的名称)列表?

阿波罗 activemq ack

使用队列的 C# STOMP 消息传递

如何使用 Java 将错误消息移动到 Azure 死信队列(主题 - 订阅)?

从 mule 中的队列/主题中读取消息

与 Mule/ActiveMQ 和 C++ Stomp 的客户端通信