弹簧websocket与STOMP,SOCKJS和ACTIVEMQ

时间:2016-03-17 20:15:23

标签: java activemq stomp spring-websocket sockjs

我们正在将spring web套接字集成到我们的应用程序中,并且我运行了hello world示例,并且令人惊讶的是Spring为我们连接所有内容以将服务器端通知推送到客户端。

但是我有一些简单的问题

1)如何创建队列?我正在使用ActiveMQ并且队列名称不同(例如,像greetings-user3n9_jn3i)然后我在目的地中指定的例如

simpMessageSendingOperations.convertAndSend("/test/greeting", new Greeting("Hello Socket Listener!"));

2)目的地名称是否与队列不同?

3)我正在使用ActiveMQ控制台创建新的队列,例如/ test1 /问候和发送我正在客户端订阅它们,如图所示

var stompClient = null;

connect();

function connect() {
    var socket = new SockJS(stompUrl);
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function(frame) {
        console.log('Connected: ' + frame);
        stompClient.subscribe('/user/queue/greetings', function(greeting){
            alert(greeting);
        });
    });
}

 function disconnect() {
        if (stompClient != null) {
            stompClient.disconnect();
        }
        setConnected(false);
        console.log("Disconnected");
    }

$("#lstnMsgsBtn").click(function() {
    $.ajax({
        url: testUrl,
        type: "POST",
        success: function(data) {

            var queueName = data.queueName;

            stompClient.subscribe(queueName, function(greeting){
                alert(greeting);
            });
        },
        error : function(jqXhr, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });
});

我无法订阅queueName,我很确定我的思路方式错误,任何指针都会非常感激。

1 个答案:

答案 0 :(得分:0)

  1. 我使用过RabbitMq,他们documentation解释了他们如何解析目标模式。我认为它在主动mq中非常相似。通常就像

    /exchange/routingkey
    

    将为每个订户动态生成队列,并通过路由密钥绑定到交换。但您也可以指定队列。您必须遵循交易所指定的语法。

  2. 我想上面也回答这个问题。