gpt4 book ai didi

java - 使用 ActiveMQ Ajax 客户端时出现长时间延迟

转载 作者:行者123 更新时间:2023-11-30 03:56:59 25 4
gpt4 key购买 nike

我正在测试基本的 ActiveMQ AjaxServlet 服务以与后端 ActiveMQ 服务进行通信。我遇到的问题是,使用 ajax 客户端从队列接收消息所需的时间有时会超过 20 秒。每次延迟的长度都完全不同,但它足够长,以至于我担心继续解决该问题。我尝试过原型(prototype)适配器和 jquery 适配器,两者都表现出相同的问题。我尝试了多个浏览器,但同样的问题仍然存在。我与远程队列的连接非常好,并且没有延迟。

编辑

我看到消息延迟了 25 秒,这是 ajax 连接的超时时间。我认为这不是正确的行为,它应该在收到消息时中断,然后重新连接。这是正确的假设吗?

ActiveMQ 版本:5.9.0
火狐浏览器:28
Chrome:最新版本
Tomcat :7.0.52

web.xml

<context-param>
<param-name>org.apache.activemq.brokerURL</param-name>
<param-value>tcp://remoteaddress.example:61616</param-value>
</context-param>

<servlet>
<servlet-name>AjaxServlet</servlet-name>
<servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class>
<async-supported>true</async-supported>
</servlet>

<servlet>
<servlet-name>MessageServlet</servlet-name>
<servlet-class>org.apache.activemq.web.MessageServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>


<servlet-mapping>
<servlet-name>MessageServlet</servlet-name>
<url-pattern>/q/message/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>AjaxServlet</servlet-name>
<url-pattern>/q/ajax/*</url-pattern>
</servlet-mapping>

Javascript

<script type="text/javascript" src="js/amq/prototype.js"></script>
<script type="text/javascript" src="js/amq/amq_prototype_adapter.js"></script>
<script type="text/javascript" src="js/amq/amq.js"></script>
<script type="text/javascript">

var amq = org.activemq.Amq;
amq.init({
uri: 'q/ajax',
logging: true
});

var myHandler =
{
rcvMessage: function(message)
{
alert("received "+message);
}
};

var myDestination='queue://com.broadworks.dms.client';

var myMessage = '<message>foooooo barrrr</message>';
var myId = '1231234';

amq.addListener(myId, myDestination, myHandler.rcvMessage);


try {
amq.sendMessage(myDestination, myMessage);
} catch (err) {
alert(err);
}

</script>

最佳答案

我曾经使用 ActiveMQ 的 JavaScript 库来构建连接到 ActiveMQ 的 Web 应用程序。我转而使用他们的 websockets 界面,但再也没有回去过。只需按照此处所述打开 websocket 接口(interface)即可:http://activemq.apache.org/mqtt.html 。然后使用此处的 STOMP over WebSocket 库:http://jmesnil.net/stomp-websocket/doc/

关于java - 使用 ActiveMQ Ajax 客户端时出现长时间延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com