Websockets,SockJs,Stomp,Spring,RabbitMQ,自动删除特定用户队列

5

我希望有人能够帮助我解决这个问题。我正在使用Spring的Websocket支持,结合SockJs和StompJs。我像这样订阅了一个队列:

    var socket = new SockJS(localhost + 'websocket');
    stompClient = Stomp.over(socket);
    stompClient.connect('', '', function(frame) {
        stompClient.subscribe("/user/queue/gotMessage", function(message) {
            gotMessage((JSON.parse(message.body)));
        });
    }, function(error) {
    });

这个在Spring的SimpMessageSendingOperations下运行得非常好。但是有一个大问题,队列名称看起来像这样:gotMessage-user3w4tstcj,并且它没有声明为自动删除队列,但这正是我想要的。否则,我就会有10k个未使用的队列。当这个队列没有消费者时,应该删除队列。该如何实现呢?


1
看起来是某个库特定的问题,官方文档有关于清理临时队列的说明吗? - pinepain
我找到的唯一内容是:“例如,RabbitMQ创建自动删除队列, 目的地为'/exchange/amq.direct/a'”,但是无法进行特定用户的发送。 - Ogniute
1个回答

4

我有同样的问题,从文档中得知:

当使用像/exchange/amq.direct/position-updates这样的目标时,RabbitMQ会创建自动删除队列。因此,在这种情况下,客户端可以订阅/user/exchange/amq.direct/position-updates

请记住在stomp broker relay配置中添加'/exchange/'作为目标前缀。


谢谢...那个有效。我只是忘记在stomp代理中添加'/exchange/'了。 - Ogniute

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接