Message Queue 消息传送可以运行于 HTTP/HTTPS 连接之上。 因为 HTTP/HTTPS 连接通常可以穿过防火墙,因此可以通过防火墙将客户端应用程序与代理隔开。
图 C–1 列出了提供 HTTP/HTTPS 支持所需的主要组件。
在客户端,HTTP 或 HTTPS 传输驱动程序将 Message Queue 消息封装到 HTTP 请求中,并确保将这些请求以正确的顺序发送给 Web 服务器/应用服务器。
必要时,客户端可以使用 HTTP 代理服务器与代理进行通信。 可以在启动客户端时使用命令行选项指定代理的地址。 有关详细信息,请参见使用 HTTP 代理。
HTTP 或 HTTPS 隧道 Servlet(均与 Message Queue 捆绑在一起)被装入 Web 服务器/应用服务器中,用于在将有效负荷消息转发给代理之前,从客户端 HTTP 请求中提取这些消息。 HTTP/HTTPS 隧道 Servlet 还将代理消息发送回客户端,以响应客户端发出的 HTTP 请求。可以使用一个 HTTP/HTTPS 隧道 Servlet 访问多个代理。
在代理端,httpjms 或 httpsjms 连接服务展开并分离来自相应隧道 Servlet 的传入消息。
如果 Web 服务器/应用服务器出现故障并重新启动,则所有连接都将恢复且不会对客户端产生影响。 如果代理出现故障并重新启动,则会抛出异常,客户端必须重新建立连接。如果 Web 服务器/应用服务器和代理均出现故障(这种情况不太可能发生),并且代理没有重新启动,则 Web 服务器/应用服务器将恢复客户端连接并等待代理恢复连接,而不会通知客户端。 为了避免出现这种情况,应始终重新启动代理。
从图 C–1 可以看出,HTTP 和 HTTPS 支持的体系结构非常相似。 主要区别在于,对于 HTTPS(httpsjms 连接服务)而言,隧道 Servlet 与客户端应用程序和代理之间的连接都是安全的。
与代理之间的安全连接是通过支持 SSL 的隧道 Servlet (Message Queue 的 HTTPS 隧道 Servlet)提供的,该 Servlet 向请求连接的任何代理发送自签名证书。 代理使用该证书建立与 HTTPS 隧道 Servlet 的加密连接。建立此连接之后,客户端应用程序和 Web 服务器/应用服务器可以协商建立客户端应用程序与隧道 Servlet 之间的安全连接。