20.6. 配置
20.6.1. 配置 JMS 服务器
要为 HornetQ 配置 JMS 服务器,请编辑服务器配置文件。对于域服务器,服务器配置包含在
EAP_HOME/domain/configuration/domain.xml
里;而对于独立服务器,则位于 EAP_HOME/standalone/configuration/standalone-full.xml
文件里。
服务器配置文件里的
<subsystem xmlns="urn:jboss:domain:messaging:1.4">
元素包含了所有的 JMS 配置。按需要为 JNDI 添加任何 JMS ConnectionFactory
、Queue
或 Topic
实例。
启用 JBoss EAP 6 里的 JMS 子系统。
在<extensions>
元素里,检查是否有下面一行且没被注释:<extension module="org.jboss.as.messaging"/>
添加基本的 JMS 子系统。
如果 Messaging 子系统没有出现在你的配置文件里,请添加它。- 查找对应你所使用的配置集的
<profile>
,并定位它的<subsystems>
标签。 - 将下列 XML 内容复制到
<profile>
标签下。<subsystem xmlns="urn:jboss:domain:messaging:1.4"> <hornetq-server> <!-- ALL XML CONFIGURATION IS ADDED HERE --> </hornetq-server> </subsystem>
所有进一步的配置都将添加到空行的上方。
添加基本的 JMS 配置。
在<subsystem xmlns="urn:jboss:domain:messaging:1.4">
<hornetq-server>
标签下的空行里添加下列 XML 内容:<journal-min-files>2</journal-min-files> <journal-type>NIO</journal-type> <persistence-enabled>true</persistence-enabled>
定制上面的值以满足你的需要。警告
journal-file-size
的值必须大于或等于min-large-message-size
(默认值为 100KiB),否则服务器无法存储这个消息。在 HornetQ 里添加连接工厂实例
客户使用 JMSConnectionFactory
对象来创建到服务器的连接。要添加 JMS 连接工厂对象到 HornetQ 里,请为每个连接工厂包含一个<jms-connection-factories>
标签和<connection-factory>
元素:<jms-connection-factories> <connection-factory name="InVmConnectionFactory"> <connectors> <connector-ref connector-name="in-vm"/> </connectors> <entries> <entry name="java:/ConnectionFactory"/> </entries> </connection-factory> <connection-factory name="RemoteConnectionFactory"> <connectors> <connector-ref connector-name="netty"/> </connectors> <entries> <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/> </entries> </connection-factory> <pooled-connection-factory name="hornetq-ra"> <transaction mode="xa"/> <connectors> <connector-ref connector-name="in-vm"/> </connectors> <entries> <entry name="java:/JmsXA"/> </entries> </pooled-connection-factory> </jms-connection-factories>
配置
netty
连接器和接收器这个 JMS 连接工厂使用netty
接收器和连接器。它们是部署在服务器配置文件里的连接器和接收器对象的引用。连接器对象定义用来连接 HornetQ 服务器的传输和参数。接收器对象则确定 HornetQ 服务器接受的连接的类型。要配置netty
连接器,请包含下列设置:<connectors> <netty-connector name="netty" socket-binding="messaging"/> <netty-connector name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> </netty-connector> <in-vm-connector name="in-vm" server-id="0"/> </connectors>
要配置netty
连接器,请包含下列设置:<acceptors> <netty-acceptor name="netty" socket-binding="messaging"/> <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> <param key="direct-deliver" value="false"/> </netty-acceptor> <in-vm-acceptor name="in-vm" server-id="0"/> </acceptors>
复查配置。
如果您遵照了之前的步骤,您的消息子系统应该类似于:<subsystem xmlns="urn:jboss:domain:messaging:1.4"> <hornetq-server> <journal-min-files>2</journal-min-files> <journal-type>NIO</journal-type> <persistence-enabled>true</persistence-enabled> <jms-connection-factories> <connection-factory name="InVmConnectionFactory"> <connectors> <connector-ref connector-name="in-vm"/> </connectors> <entries> <entry name="java:/ConnectionFactory"/> </entries> </connection-factory> <connection-factory name="RemoteConnectionFactory"> <connectors> <connector-ref connector-name="netty"/> </connectors> <entries> <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/> </entries> </connection-factory> <pooled-connection-factory name="hornetq-ra"> <transaction mode="xa"/> <connectors> <connector-ref connector-name="in-vm"/> </connectors> <entries> <entry name="java:/JmsXA"/> </entries> </pooled-connection-factory> </jms-connection-factories> <connectors> <netty-connector name="netty" socket-binding="messaging"/> <netty-connector name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> </netty-connector> <in-vm-connector name="in-vm" server-id="0"/> </connectors> <acceptors> <netty-acceptor name="netty" socket-binding="messaging"/> <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput"> <param key="batch-delay" value="50"/> <param key="direct-deliver" value="false"/> </netty-acceptor> <in-vm-acceptor name="in-vm" server-id="0"/> </acceptors> </hornetq-server> </subsystem>
配置套接字绑定组
netty 连接器引用了messaging
和messaging-throughput
套接字绑定。messaging
套接字使用了端口 5445,而messaging-throughput
套接字绑定使用了端口 5455。<socket-binding-group>
标签位于服务器配置文件的单独部分。请确保下列套接字绑定出现在<socket-binding-groups>
元素里:<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ... <socket-binding name="messaging" port="5445"/> <socket-binding name="messaging-throughput" port="5455"/> ... </socket-binding-group>
可选:添加 queue 实例到 HornetQ 里
有四种方法可设置 HornetQ 的队列实例(或 JMS 目的地)。- 使用管理控制台要使用管理控制台,服务器必须已经以
Message-Enabled
模式启动。您可以用-c
选项并强制使用standalone-full.xml
(对于独立服务器)配置文件来做到这一点。例如,在独立模式下,下列命令将以 message-enabled 模式启动服务器:./standalone.sh -c standalone-full.xml
服务器启动后,请登录管理控制台并选择 Default 的右侧点击 ,然后点击 输入 JMS 目的地的细节。标签页。展开 菜单,然后展开 菜单并点击 。在 JMS Messaging Provider 表的 - 使用管理 CLI:首先,连接至管理 CLI:
bin/jboss-cli.sh --connect
然后,进入消息子系统:cd /subsystem=messaging/hornetq-server=default
最后,执行 add 操作,用自己的内容替换下例里的值:./jms-queue=testQueue:add(durable=false,entries=["java:jboss/exported/jms/queue/test"])
- 创建一个 JMS 配置文件并将其添加至 deployments 文件夹从创建 JMS 配置文件 example-jms.xml 开始。添加下列条目,用自己的设置替换相关的值:
<?xml version="1.0" encoding="UTF-8"?> <messaging-deployment xmlns="urn:jboss:messaging-deployment:1.0"> <hornetq-server> <jms-destinations> <jms-queue name="testQueue"> <entry name="queue/test"/> <entry name="java:jboss/exported/jms/queue/test"/> </jms-queue> <jms-topic name="testTopic"> <entry name="topic/test"/> <entry name="java:jboss/exported/jms/topic/test"/> </jms-topic> </jms-destinations> </hornetq-server> </messaging-deployment>
保存文件到 deployments 文件夹并进行部署。 - 在 JBoss EAP 6 配置文件里添加条目。以 standalone-full.xml 为例子,找到里面的消息子系统。
<subsystem xmlns="urn:jboss:domain:messaging:1.4">
添加下列条目,并用自己的设置替换相关的值。您需要在 </jms-connection-factories> 标签后但在 </hornetq-server> 元素前添加这些内容:<jms-destinations> <jms-queue name="testQueue"> <entry name="queue/test"/> <entry name="java:jboss/exported/jms/queue/test"/> </jms-queue> <jms-topic name="testTopic"> <entry name="topic/test"/> <entry name="java:jboss/exported/jms/topic/test"/> </jms-topic> </jms-destinations>
执行其他的配置
如果您需要其他的设置,请复查EAP_HOME/docs/schema/jboss-as-messaging_1_4.xsd
里的 DTD。