Show Table of Contents
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
服务器启动后,请登录管理控制台并选择 标签页。展开 菜单,然后展开 菜单并点击 。在 JMS Messaging Provider 表的 Default 的右侧点击 ,然后点击 输入 JMS 目的地的细节。 - 使用管理 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。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.