Gold100
Gold100

Reputation: 124

Problems with RabbitMQ and web-stomp

I'm using RabbitMQ and web-stomp in the web browser according to this tutorial: https://www.rabbitmq.com/web-stomp.htm

I succeded to connect and the get messages in the browser.

But,

  1. the message I sent and consumed in the client is still in the queue and not being dequeing(I did manual ack and auto ack), it still exists.

  2. when I subscribe to a queue I'm not getting all the messages in the queue, but only the last.. only when the websocket is open and then the server send the message i get the last message but not the old ones.

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

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

Thanks.

Upvotes: 1

Views: 2058

Answers (1)

Gold100
Gold100

Reputation: 124

Solved it, the exchange name needs to be "amq.topic"

Upvotes: 2

Related Questions