Websocket STOMP消息未到达队列
我试图使用STOMP和ActiveMQ将客户端输入到浏览器的消息发送到队列。从控制台中获得的读数来看,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语法来实现这一点?我是
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');