【问题标题】:Spring websocket with STOMP, SOCKJS and ACTIVEMQ带有 STOMP、SOCKJS 和 ACTIVEMQ 的 Spring websocket
【发布时间】:2016-07-04 09:47:36
【问题描述】:

我们正在将 Spring Web 套接字集成到我们的应用程序中,我运行了 hello world 示例,令人惊奇的是,spring 为我们将所有东西都连接起来,以便将服务器端通知推送到客户端。

不过我有一些简单的问题

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

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

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

3) 我正在使用 ActiveMQ 控制台创建新队列,例如/test1/greeting and send 我在客户端订阅它们,如图所示

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,我很确定我的想法是错误的,任何指针都将不胜感激。

【问题讨论】:

    标签: java activemq stomp spring-websocket sockjs


    【解决方案1】:
    1. 我与 RabbitMq 合作过,他们的documentation 解释了他们如何解析目标模式。我认为它在活动 mq 中非常相似。通常是这样的

      /exchange/routingkey
      

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

    2. 我认为上面也回答了这个问题。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 2015-01-25
      • 2016-05-02
      • 2017-10-04
      • 2017-05-29
      • 2016-03-21
      • 2015-04-06
      • 2017-06-05
      • 2022-12-15
      相关资源
      最近更新 更多