【发布时间】:2013-05-17 05:54:48
【问题描述】:
我正在学习 JMS,想知道 JMS 客户端(例如 MessageListener)如何注意到它注册的队列中的新消息。它是否经常通过 TCP 向代理发送请求以查看是否有新消息?如果是,这个请求是同步的还是异步的?
【问题讨论】:
-
客户端与代理创建会话。然后代理将向客户端发送消息。客户端不需要轮询代理,我怀疑任何 JMS 实现都会这样做。
-
你能介绍一下协议代理用来发送消息的情况吗?客户端和代理是否总是维护一个套接字来一起通信?
-
JMS 是更高级别的协议。代理生产者和客户端如何通信取决于实现。只要代理符合会话合同,它就可以通过 UDP、TCP、SCTP、电子邮件或任何它认为最好的方式进行通信。
-
阅读规范,JMS 仅在 TCP 上发送消息:连接有多种用途: • 它封装了与 JMS 提供者的开放连接。它通常表示客户端和提供者的服务守护进程之间的开放 TCP/IP 套接字
-
当有输入流(由代理发送)进入其套接字端口时,客户端可能会收到一条新消息通知。我不确定。