Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RabbitMQ和web stomp的问题_Javascript_Rabbitmq_Stomp_Web Stomp - Fatal编程技术网

Javascript RabbitMQ和web stomp的问题

Javascript RabbitMQ和web stomp的问题,javascript,rabbitmq,stomp,web-stomp,Javascript,Rabbitmq,Stomp,Web Stomp,根据本教程,我在web浏览器中使用RabbitMQ和web stomp: 我成功连接并在浏览器中获取消息 但是, 我在客户机中发送和使用的消息仍然在队列中,并且没有被释放(我进行了手动确认和自动确认),它仍然存在 当我订阅一个队列时,我不会得到队列中的所有消息,而只是最后一条。。只有当websocket打开,然后服务器发送消息时,我才收到最后一条消息,而不是旧消息 服务器代码: private static final String EXCHANGE_NAME = "amq.topic";

根据本教程,我在web浏览器中使用RabbitMQ和web stomp:

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

但是,

  • 我在客户机中发送和使用的消息仍然在队列中,并且没有被释放(我进行了手动确认和自动确认),它仍然存在

  • 当我订阅一个队列时,我不会得到队列中的所有消息,而只是最后一条。。只有当websocket打开,然后服务器发送消息时,我才收到最后一条消息,而不是旧消息

  • 服务器代码:

    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, '/');
    

    谢谢

    解决了这个问题,exchange名称必须是“amq.topic”

    5个月后回答这个问题做得很好。非常好的手提包。