3.2. Messaging 子系统配置概述


在使用 full 或 full - ha 配置启动 JBoss EAP 服务器时,包含 messaging- activemq 子系统的默认配置。full-ha 选项包括 集群和 高可用性 等功能的高级配置。

虽然不需要,但 建议您使用 helloworld-mdb 快速入门 作为有效的示例,以便与配置概述一起运行。

如需有关 messaging-activemq 子系统中所有可用设置的信息,请参见 EAP_HOME/docs/schema/ 目录中的架构定义,或者从管理 CLI 对子系统运行 read-resource-description 操作,如下所示:

/subsystem=messaging-activemq:read-resource-description(recursive=true)
Copy to Clipboard Toggle word wrap

服务器配置文件中的以下扩展名指示 JBoss EAP 将 messaging-activemq 子系统作为其运行时的一部分:

<extensions>
  ...
  <extension module="org.wildfly.extension.messaging-activemq"/>
  ...
</extensions>
Copy to Clipboard Toggle word wrap

messaging-activemq 子系统的配置包含在 <subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> 元素中。

<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
    <server name="default">
        <cluster password="${jboss.messaging.cluster.password:CHANGE ME!!}"/>
        <security-setting name="#">
            <role name="guest" send="true" consume="true" create-non-durable-queue="true" delete-non-durable-queue="true"/>
        </security-setting>
        <address-setting name="#" dead-letter-address="jms.queue.DLQ" expiry-address="jms.queue.ExpiryQueue" max-size-bytes="10485760" page-size-bytes="2097152" message-counter-history-day-limit="10" redistribution-delay="1000"/>
        <http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/>
        <http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput">
            <param name="batch-delay" value="50"/>
        </http-connector>
        <in-vm-connector name="in-vm" server-id="0"/>
        <http-acceptor name="http-acceptor" http-listener="default"/>
        <http-acceptor name="http-acceptor-throughput" http-listener="default">
            <param name="batch-delay" value="50"/>
            <param name="direct-deliver" value="false"/>
        </http-acceptor>
        <in-vm-acceptor name="in-vm" server-id="0"/>
        <broadcast-group name="bg-group1" connectors="http-connector" jgroups-cluster="activemq-cluster"/>
        <discovery-group name="dg-group1" jgroups-cluster="activemq-cluster"/>
        <cluster-connection name="my-cluster" address="jms" connector-name="http-connector" discovery-group="dg-group1"/>
        <jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
        <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
        <connection-factory name="InVmConnectionFactory" connectors="in-vm" entries="java:/ConnectionFactory"/>
        <connection-factory name="RemoteConnectionFactory" ha="true" block-on-acknowledge="true" reconnect-attempts="-1" connectors="http-connector" entries="java:jboss/exported/jms/RemoteConnectionFactory"/>
        <pooled-connection-factory name="activemq-ra" transaction="xa" connectors="in-vm" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory"/>
    </server>
</subsystem>
Copy to Clipboard Toggle word wrap
连接事实

消息传递客户端使用 JMS ConnectionFactory 对象来连接服务器。默认 JBoss EAP 配置定义多种连接工厂:请注意,有 <connection-factory> 用于 in-vm、http 和池化连接。

  <connection-factory name="InVmConnectionFactory" connectors="in-vm" entries="java:/ConnectionFactory"/>
  <connection-factory name="RemoteConnectionFactory" ha="true" block-on-acknowledge="true" reconnect-attempts="-1" connectors="http-connector" entries="java:jboss/exported/jms/RemoteConnectionFactory"/>
  <pooled-connection-factory name="activemq-ra" transaction="xa" connectors="in-vm" entries="java:/JmsXA java:jboss/DefaultJMSConnectionFactory"/>
Copy to Clipboard Toggle word wrap

如需了解更多详细信息,请参阅 配置连接事实部分

连接器和 Acceptors

每一 JMS 连接工厂使用连接器启用从客户端或消费者到消息传递服务器的 JMS 通信。连接器对象定义用于连接消息传递服务器的传输和参数。其对应对象是接收器对象,用于标识消息传递服务器接受的连接类型。

默认的 JBoss EAP 配置定义了多个连接器和接收器。

示例:默认连接器

<http-connector name="http-connector" socket-binding="http" endpoint="http-acceptor"/>
<http-connector name="http-connector-throughput" socket-binding="http" endpoint="http-acceptor-throughput">
  <param name="batch-delay" value="50"/>
</http-connector>
<in-vm-connector name="in-vm" server-id="0"/>
Copy to Clipboard Toggle word wrap

示例:默认接受器

<http-acceptor name="http-acceptor" http-listener="default"/>
<http-acceptor name="http-acceptor-throughput" http-listener="default">
  <param name="batch-delay" value="50"/>
  <param name="direct-deliver" value="false"/>
</http-acceptor>
Copy to Clipboard Toggle word wrap

详情请查看 Acceptors 和 Connectors 部分。

套接字绑定组

默认连接器 的 socket-binding 属性引用名为 http 的套接字绑定。使用 http 连接器,因为 JBoss EAP 可以在标准 Web 端口上多路复用请求。

您可以在配置文件的其他位置找到此 socket-binding 作为 <socket-binding-group> 部分的一部分。请注意 http 和 https 套接字绑定的配置如何出现在 <socket-binding-groups> 元素中:

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
   ...
  <socket-binding name="http" port="${jboss.http.port:8080}"/>
  <socket-binding name="https" port="${jboss.https.port:8443}"/>
   ...
</socket-binding-group>
Copy to Clipboard Toggle word wrap

如需有关套接字绑定的信息,请参阅 JBoss EAP 配置指南中的配置套接字绑定

消息传递安全性

在首次安装 JBoss EAP 时,messaging -activemq 子系统包含一个 security-setting 元素:

<security-setting name="#">
  <role name="guest" delete-non-durable-queue="true" create-non-durable-queue="true" consume="true" send="true"/>
</security-setting>
Copy to Clipboard Toggle word wrap

这声明,任何具有 guest 角色的用户都可以访问服务器上的任何地址,如通配符 # 所述有关通配符语法的更多信息,请参阅配置地址设置

有关保护目的地和远程连接的更多信息,请参阅配置消息传递安全性

消息传递目标

完整和全 ha 配置包括两个有帮助的队列,JBoss EAP 可以使用这些队列存放已过期或无法路由到正确目的地的消息。

<jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
<jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
Copy to Clipboard Toggle word wrap

您可以使用以下方法之一在 JBoss EAP 中添加自己的消息传递目的地:

  • 使用管理 CLI

    使用以下管理 CLI 命令添加队列:

    jms-queue add --queue-address=testQueue  --entries=queue/test,java:jboss/exported/jms/queue/test
    Copy to Clipboard Toggle word wrap

    使用以下管理 CLI 命令添加主题:

    jms-topic add --topic-address=testTopic  --entries=topic/test,java:jboss/exported/jms/topic/test
    Copy to Clipboard Toggle word wrap
  • 使用管理控制台

    可以通过导航到 Configuration Subsystems Messaging(ActiveMQ) Server,从管理控制台中配置消息传递目的地,选择 Destinations 并点 View。选择 JMS Queue 选项卡来配置队列,再选择 JMS 主题来配置主题

  • 使用 Java EE 部署描述符或注释来定义您的目的地。

    在 Jakarta EE 8 中,部署描述符可以包含队列和主题的配置。以下是定义 JMS 队列的 Java EE 描述符文件中的代码片段。

    ...
    <jms-destination>
       <name>java:global/jms/MyQueue</name>
       <interfaceName>javax.jms.Queue</interfaceName>
       <destinationName>myQueue</destinationName>
    </jms-destination>
    ...
    Copy to Clipboard Toggle word wrap

    例如,helloworld -mdb quickstart 中的消息驱动型 Bean 包含定义运行应用所需的队列和主题的注释。以这种方式创建的目的地将显示在运行时队列列表中。使用管理 CLI 显示运行时队列的列表。部署 Quickstart 后,它创建的运行时队列将如下所示:

    /subsystem=messaging-activemq/server=default/runtime-queue=*:read-resource
    {
        "outcome" => "success",
        "result" => [
            ...
            {
                "address" => [
                    ("subsystem" => "messaging-activemq"),
                    ("server" => "default"),
                    ("runtime-queue" => "jms.queue.HelloWorldMDBQueue")
                ],
                "outcome" => "success",
                "result" => {"durable" => undefined}
            },
            ...
            {
                "address" => [
                    ("subsystem" => "messaging-activemq"),
                    ("server" => "default"),
                    ("runtime-queue" => "jms.topic.HelloWorldMDBTopic")
                ],
                "outcome" => "success",
                "result" => {"durable" => undefined}
            },
            ...
        ]
    }
    Copy to Clipboard Toggle word wrap

如需了解更多详细信息,请参阅配置消息传递目标。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat