20.2.5. 配置 Netty Servlet

Servlet 传输协议允许 HornetQ 流量通过 HTTP 传输到运行在 Servlet 引擎里的 Servlet 里,然后再重定向到 in-VM HornetQ 服务器。Netty HTTP 传输充当 Web 服务器侦听专有端口上的 HTTP 通讯。通过 servlet 传输,Servlet 引擎(可能已服务网站或其他应用程序)代理 HornetQ 流量。
为了配置 servlet 引擎使用 Netty Servlet 传输协议,您需要执行下列步骤:
  • 部署 servlet:下面的例子描述了一个使用 servlet 的 Web 应用程序:
    <web-app>
      <servlet>
        <servlet-name>HornetQServlet</servlet-name>
        <servlet-class>org.jboss.netty.channel.socket.http.HttpTunnelingServlet</servlet-class>
        <init-param>
          <param-name>endpoint</param-name>
          <param-value>local:org.hornetq</param-value>
        </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>HornetQServlet</servlet-name>
        <url-pattern>/HornetQServlet</url-pattern>
      </servlet-mapping>
    </web-app>
    
    
    初始参数 endpoint 指定 Servlet 将转发数据包的 Netty 接收器的 host 属性。
  • 在服务器端的配置里插入 Netty servlet 接收器:下例展示了服务器配置文件里的接收器定义(standalone.xmldomain.xml):
    <acceptors>
       <acceptor name="netty-servlet">
          <factory-class>
             org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory
          </factory-class>
          <param key="use-servlet" value="true"/>
          <param key="host" value="org.hornetq"/>
       </acceptor>
    </acceptors>
    
    
  • 最后一步是在服务器配置文件(standalone.xmldomain.xml)里为客户定义接收器:
    <netty-connector name="netty-servlet" socket-binding="http">
       <param key="use-servlet" value="true"/>
       <param key="servlet-path" value="/messaging/HornetQServlet"/>
    </netty-connector>
    
    
  • 添加下列接收器配置,您也可以使用基于 SSL 的 Servlet 传输:
    <netty-connector name="netty-servlet" socket-binding="https">
       <param key="use-servlet" value="true"/>
       <param key="servlet-path" value="/messaging/HornetQServlet"/>
       <param key="ssl-enabled" value="true"/>
       <param key="key-store-path" value="path to a key-store"/>
       <param key="key-store-password" value="key-store password"/>
    </connector>
    
    

警告

通过 HTTP tunneling servlet 连接的客户不支持自动失效切换。

注意

Netty servlet 无法用于配置 EAP 服务器以设立 HornetQ 群集。