RabbitMQ和web-stomp的问题

时间:2016-06-21 14:26:07

标签: javascript rabbitmq stomp web-stomp

根据本教程,我在Web浏览器中使用RabbitMQ和web-stomp: https://www.rabbitmq.com/web-stomp.htm

我成功连接并在浏览器中获取消息。

但是,

  1. 我在客户端发送和使用的消息仍然在队列中而没有出列(我做了手动确认和自动确认),它仍然存在。

  2. 当我订阅队列时,我没有得到队列中的所有消息,只有最后一个..只有当websocket打开然后服务器发送消息我得到最后一条消息但没有旧的。

  3. 服务器代码:

    private static final String EXCHANGE_NAME = "amq.topic";
    
    public static void AddToQueue(String RoutingKey, String message) throws IOException, TimeoutException {
            ConnectionFactory factory = new ConnectionFactory();
            factory.setHost("localhost");
            Connection connection = factory.newConnection();
            Channel channel = connection.createChannel();
    
        channel.exchangeDeclare(EXCHANGE_NAME, "topic");
    
            channel.basicPublish(EXCHANGE_NAME, RoutingKey, null, message.getBytes());
    
            channel.close();
            connection.close();
    }
    

    客户端代码:

     var ws = new SockJS('http://' + window.location.hostname + ':15674/stomp');
    $scope.client = Stomp.over(ws);
    $scope.client.heartbeat.outgoing = 0;
    $scope.client.heartbeat.incoming = 0;
    var on_connect = function(x) {
           $scope.client.subscribe("/topic/status", function(d) {
               console.log(d.body);
    });
    };
    var on_error =  function() {
        console.log('error');
    };
    $scope.client.connect('guest', 'guest', on_connect, on_error, '/');
    

    感谢。

1 个答案:

答案 0 :(得分:1)

解决了,交换名称必须是“amq.topic”