2

我在 ActiveMQ 官方页面上阅读了它是如何工作的,但无法理解整个场景是如何进行请求和响应的。根据我现在的理解,如果我在服务器上有一个 serverlet,并且使用 amq.js 作为客户端的 JavaScript,那么

  1. JavaScript 向服务器发送轮询请求。
  2. 服务器启动一个线程并检查要作为响应发送的数据。
  3. 如果此时数据不可用,服务器将等待直到有任何数据。
  4. 服务器在可用时发送数据,然后连接中断。
  5. 客户端收到数据并再次发送轮询请求。

以这种方式,客户端请求被停在服务器上,直到接收到数据。

这种理解是否正确和可能?如果是,请求如何停放在服务器上?

谢谢。

4

1 回答 1

3

是的,你理解正确。但是由于请求将被保留 30 秒的限制,它会超时(默认)。

使用Jetty Continuations将请求停放在服务器上,因为 Jetty 是 ActiveMQ 中的 servlet 容器。

由于 ActiveMQ(java 端)可以设置异步侦听器,因此不需要为整个轮询阻塞线程。

于 2013-01-17T10:07:52.443 回答