我正在測試基本的ActiveMQ AjaxServlet服務以與後端ActiveMQ服務進行通信。我遇到的問題是,使用ajax客戶端從隊列中接收消息所用的時間有時會超過20秒。延遲的時間長度每次都完全不同,但是我很關心如何解決問題。我試過了原型適配器和jquery適配器,兩者都表現出相同的問題。我嘗試了多個瀏覽器,同樣的問題仍然存在。我與遠程隊列有良好的連接,並且沒有延遲。使用ActiveMQ Ajax客戶端時的延遲很長
編輯
我看到該消息被延遲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>
感謝凱文,我最終走了同樣的路線。我修復了gwt activemq庫與websockets一起工作,並且完美運行。 –
如果網絡不支持websocket,但它確實允許AJAX連接?有關如何加快速度的建議? –