订阅已删除队列时出错

时间:2016-11-27 14:52:17

标签: websocket queue rabbitmq amqp stomp

我正在构建一个基于消息的Web应用程序,它假设实时显示股票报价,

我选择RabbitMQ作为我的消息总线,我有一个交换机,它接收来自几个流动性提供商的报价流,并根据路由密钥将它们路由到相应的队列。然后,报价将被解析并显示在屏幕上的相关小部件上。

这是Exchange和队列结构 -

| exchange       | type   | routing key       | queue              |
|------------------------------------------------------------------|
| quotes         | topic  | NASDAQ.MSFT.500   | Widget1Id          |
| quotes         | topic  | NASDAQ.FB.1500    | Widget2Id          |
| quotes         | topic  | S&P500.ABT.200    | Widget3Id          |
| quotes         | topic  | S&P500.MMM.200    | Widget4Id          |
| quotes         | topic  | S&P500.MMM.500    | Widget5Id          |

队列是自动删除的,所以当我将其中一个小部件更改为另一个路由键时,旧队列就会死掉。

但是当我想重新订阅旧队列时,我收到了错误。

即 -

widget1订阅队列NASDAQ.MSFT.500,现在用户想要更改设置并获得NASDAQ.FB.1500,因此widget1取消订阅NASDAQ.MSFT.500并订阅NASDAQ.FB.1500。

直到现在一直很好,

如果widget1想再次订阅NASDAQ.MSFT.500,我总是收到错误:

"NOT_FOUND - no queue 'NASDAQ.MSFT.500' in vhost '/'↵"

这是假设发生了吗?

是否无法重新订阅已删除的队列?

我不应该删除队列吗?

P.S - 我使用StompJs作为我的框架来消费来自队列的消息。

0 个答案:

没有答案
相关问题