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
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.
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.
Nice job auf die Beantwortung dieser 5 Monate später sein. Sehr Taschen. –