2016-06-21 3 views
0

Ich verwende RabbitMQ und Web-Stomp im Web-Browser nach diesem Tutorial: https://www.rabbitmq.com/web-stomp.htmProbleme mit RabbitMQ und Web-stomp

succeded ich zu verbinden und die Nachrichten im Browser zu bekommen.

Aber

  1. die Botschaft, die ich und in dem Client verbrauchen gesandt hat, ist noch in der Warteschlange und nicht dequeing zu sein (ich habe manuellen ack und Auto ack), es ist noch vorhanden.

  2. Wenn ich eine Warteschlange abonnieren Ich bekomme nicht alle Nachrichten in der Warteschlange, sondern nur die letzte .. nur wenn der Websocket geöffnet ist und dann der Server die Nachricht senden, bekomme ich die letzte Nachricht, aber nicht die alte.

Der Server-Code:

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(); 
} 

Der Client-Code:

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

Dank.

Antwort

1

es wurde gelöst, muss der Austausch Namen „amq.topic“

+0

Nice job auf die Beantwortung dieser 5 Monate später sein. Sehr Taschen. –