Websocket STOMP消息未到达队列

Websocket STOMP消息未到达队列,websocket,activemq,stomp,Websocket,Activemq,Stomp,我试图使用STOMP和ActiveMQ将客户端输入到浏览器的消息发送到队列。从控制台中获得的读数来看,STOMP连接成功。我没有收到错误,正在使用该行: stompClient.send("/queue/testQSource", {}, JSON.stringify({ 'name': name })); 在my index.html中执行此操作。但是,当我在输入到浏览器后检查ActiveMQ控制台时,testQSource没有添加任何内容。我是否使用了正确的STOMP语法来实现这一点?我是

我试图使用STOMP和ActiveMQ将客户端输入到浏览器的消息发送到队列。从控制台中获得的读数来看,STOMP连接成功。我没有收到错误,正在使用该行:

stompClient.send("/queue/testQSource", {}, JSON.stringify({ 'name': name }));
在my index.html中执行此操作。但是,当我在输入到浏览器后检查ActiveMQ控制台时,testQSource没有添加任何内容。我是否使用了正确的STOMP语法来实现这一点?我是否需要在HTML文件的顶部添加除STOMP源之外的任何源代码

队列在此以驼峰路径实例化:

        <from uri="jms:queue:testQSource"/>
        <to uri="securityBean"/>
        <log message="Routing message from testQSource to testQDestination queue with data ${body}"/>
        <to uri="jms:queue:testQDestination"/>
        <to uri="activationBean"/>
        <log message="message: ${body}"/>

我相信这是因为STOMP消息的形式与队列和/或路由所期望的不同。但是,我不知道如何配置我的路线,以允许我使用我的STOMP消息。有什么提示吗?

如果没有更多信息,很难说,但我的第一个猜测是stomp客户端连接在消息有机会写入套接字或被ActiveMQ读取之前已经关闭。您可能想考虑通过向外部框添加请求ID并等待代理向您发送响应帧来对队列进行阻塞。这将确保您的消息在连接关闭之前发布


如何执行阻塞put取决于您使用的客户端,因此您需要查看文档以了解执行阻塞put的正确方法。通常存在同步发送方法,或者客户端将“”标头添加到帧中,然后执行阻止接收,直到您返回具有正确匹配的“”标头的接收帧。

是否在ActiveMQ服务器的stomp端口上连接? 如“transportConnector”下的配置(activemq.xml)所示 stomp需要在默认配置的端口61613上连接

将Node.js与“stomp client”和本地主机上的默认ActiveMQ服务器一起使用:

var my_client = new Stomp('127.0.0.1', 61613, 'admin', 'admin');

驼峰路由配置中的URI包含JMS,但STOMP不同。你试过用跺脚代替jms吗?
var my_client = new Stomp('127.0.0.1', 61613, 'admin', 'admin');