3.2. Messaging 子系统配置概述
在使用 full 或 full - 子系统的默认配置。ha 配置启动 JBoss EAP 服务器时,包含 messaging- activemqfull-ha 选项包括 集群和 高可用性 等功能的高级配置。
虽然不需要,但 建议您使用 helloworld-mdb 快速入门 作为有效的示例,以便与配置概述一起运行。
如需有关 messaging-activemq 子系统中所有可用设置的信息,请参见 EAP_HOME/docs/schema/ 目录中的架构定义,或者从管理 CLI 对子系统运行 read-resource-description 操作,如下所示:
/subsystem=messaging-activemq:read-resource-description(recursive=true)
/subsystem=messaging-activemq:read-resource-description(recursive=true)
服务器配置文件中的以下扩展名指示 JBoss EAP 将 messaging-activemq 子系统作为其运行时的一部分:
<extensions> ... <extension module="org.wildfly.extension.messaging-activemq"/> ... </extensions>
<extensions>
...
<extension module="org.wildfly.extension.messaging-activemq"/>
...
</extensions>
messaging-activemq 子系统的配置包含在 <subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0"> 元素中。
连接事实
消息传递客户端使用 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"/>
<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"/>
如需了解更多详细信息,请参阅 配置连接事实部分。
连接器和 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"/>
<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>
<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>
详情请查看 Acceptors 和 Connectors 部分。
套接字绑定组
默认连接器 的 socket-binding 属性引用名为 http 的套接字绑定。使用 http 连接器,因为 JBoss EAP 可以在标准 Web 端口上多路复用请求。
您可以在配置文件的其他位置找到此 socket-binding 作为 <socket-binding-group> 部分的一部分。请注意 http 和 https 套接字绑定的配置如何出现在 <socket-binding-groups> 元素中:
如需有关套接字绑定的信息,请参阅 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>
<security-setting name="#">
<role name="guest" delete-non-durable-queue="true" create-non-durable-queue="true" consume="true" send="true"/>
</security-setting>
这声明,任何具有 guest 角色的用户都可以访问服务器上的任何地址,如通配符 # 所述。有关通配符语法的更多信息,请参阅配置地址设置。
有关保护目的地和远程连接的更多信息,请参阅配置消息传递安全性。
消息传递目标
配置包括两个有帮助的队列,JBoss EAP 可以使用这些队列存放已过期或无法路由到正确目的地的消息。
完整和全 ha
<jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/> <jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
<jms-queue name="ExpiryQueue" entries="java:/jms/queue/ExpiryQueue"/>
<jms-queue name="DLQ" entries="java:/jms/queue/DLQ"/>
您可以使用以下方法之一在 JBoss EAP 中添加自己的消息传递目的地:
使用管理 CLI
使用以下管理 CLI 命令添加队列:
jms-queue add --queue-address=testQueue --entries=queue/test,java:jboss/exported/jms/queue/test
jms-queue add --queue-address=testQueue --entries=queue/test,java:jboss/exported/jms/queue/testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下管理 CLI 命令添加主题:
jms-topic add --topic-address=testTopic --entries=topic/test,java:jboss/exported/jms/topic/test
jms-topic add --topic-address=testTopic --entries=topic/test,java:jboss/exported/jms/topic/testCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用管理控制台
可以通过导航到 Configuration
Subsystems Messaging(ActiveMQ) Server,从管理控制台中配置消息传递目的地,选择 Destinations 并点 View。选择 JMS Queue 选项卡来配置队列,再选择 JMS 主题来配置主题。 使用 Java EE 部署描述符或注释来定义您的目的地。
在 Jakarta EE 8 中,部署描述符可以包含队列和主题的配置。以下是定义 JMS 队列的 Java EE 描述符文件中的代码片段。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,helloworld
-mdbquickstart 中的消息驱动型 Bean 包含定义运行应用所需的队列和主题的注释。以这种方式创建的目的地将显示在运行时队列列表中。使用管理 CLI 显示运行时队列的列表。部署 Quickstart 后,它创建的运行时队列将如下所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow