【发布时间】:2016-01-04 08:37:24
【问题描述】:
我使用 RabbitMQ 作为 Spring Websocket 应用程序的 Stomp 代理。客户端使用 SockJS 库连接到 websocket 接口。 Spring 在 RabbitMQ 上创建的每个队列都是持久的,而主题是非持久的。有没有办法让队列也变得不持久? 我不认为我可以在应用程序端进行配置。我玩了一下 RabbitMQ 配置,但也无法设置。
RabbitMQ 上用于 SUBSCRIBE 和 SEND 的示例目的地:
服务用户-_385b304f-7a8f-4cf4-a0f1-d6ceed6b8c92
【问题讨论】:
-
你能展示一些创建交换队列的代码吗?简而言之:是的,这是可能的。但是正如它所写的那样,您的问题并不清楚,很难为您提供更多帮助。您要求的属性(耐用性)确实是在应用程序端配置的(就像 RabbitMQ 中的几乎所有东西一样)。所以,不清楚你的意思是“我认为我不能在应用程序端配置”。
-
代码一般遵循这个示例github.com/rstoyanchev/spring-websocket-portfolio。唯一的区别是它使用全功能的消息代理而不是嵌入在 Spring 中的。
-
我知道可以在 AMQP 协议中将队列设置为非持久队列,但我故意提到它是使用 Stomp 协议的 Spring Websocket 应用程序。
-
对不起,你是对的,乍一看,这不是微不足道的。您可以选择
rabbitmqctl set_policy stomp-queues-expiry "^stomp-" '{"expires":10000}' --apply-to queues作为解决方法吗? -
我已经做到了。这是我能找到的唯一解决方案。但它只能部分解决问题......
标签: rabbitmq stomp spring-websocket spring-messaging