31.4. 适用于远程 Artemis 的远程代理的 Jakarta 消息传递资源配置
在管理 CLI 中,您可以使用 @JMSConnectionFactoryDefinition 注释或 注释,为基于 Artemis 的远程代理(如红帽 AMQ 7)配置 Jakarta 消息传递资源。您也可以从管理控制台配置资源。
@JMSDestinationDefinition
远程 ActiveMQ 服务器资源不需要本地实例 Artemis。这有助于减少 JBoss EAP 映像的内存占用和 CPU 占用。
JBoss EAP 使用 @JMSConnectionFactoryDefinition 注释来定义连接工厂。此连接工厂可以连接到本地或远程 Artemis 代理。@JMSConnectionFactoryDefinition 注释的 resourceAdapter 元素随后引用 messaging- subsystem 中定义的 pooled-connection-factory 的名称,该名称可以连接到远程 Artemis 代理。resourceAdapter 元素定义用于创建连接工厂的资源适配器,或者定义连接工厂的资源适配器。
当 @JMSConnectionFactoryDefinition 注释中未定义 resourceAdapter 元素时,messaging-activemq 子系统将默认使用连接工厂的 JNDI 名称。这称为默认绑定。默认绑定使用 /subsystem=ee/service=default 属性来定义。如果指定了 -bindings 中的jms-connection- factoryresourceAdapter 元素,或者可以从 jms-connection-factory 的默认绑定定义 resourceAdapter 元素,如果 它是一个 pooled-connection-factory 到远程代理,您可以使用它连接到远程代理。
如果 messaging-activemq 子系统中没有定义 resourceAdapter,或者无法从 jms-connection-factory 的默认绑定获取资源,则创建 Jakarta Messaging 资源的任务将委派给 resource-adapters 子系统,该 子系统基于资源适配器的 admin-objects 和 connection-definitions 资源。
以下小节提供了如何配置和使用 @JMSConnectionFactoryDefinition 注释的示例。
使用默认资源适配器配置 @JMSConnectionFactory 定义
创建到远程实例的套接字绑定:
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=messaging-remote-throughput:add(host=127.0.0.2, port=5445)创建连接器:
/subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")创建池连接工厂:
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"]为
ee子系统定义默认的 Jakarta Messaging 连接工厂:/subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")在应用程序代码中使用
@JMSConnectionFactoryDefinition注释:@JMSConnectionFactoryDefinition(name="java:/jms/remote-amq/JmsConnectionFactory")
使用远程 Artemis Broker 配置 @JMSConnectionFactory 定义
创建连接器:
/subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")创建池连接工厂:
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"])为
ee子系统定义默认的 Jakarta Messaging 连接工厂:/subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")在应用程序代码中使用
@JMSConnectionFactoryDefinition注释:@JMSConnectionFactoryDefinition( name="java:app/myCF" resourceAdapter="myPCF" )
使用第三方 JMS 资源适配器配置 @JMSConnectionFactory 定义
创建连接器:
/subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")创建池连接工厂:
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"])为
ee子系统定义默认的 Jakarta Messaging 连接工厂:/subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")在应用程序代码中使用
@JMSConnectionFactoryDefinition注释:@JMSConnectionFactoryDefinition( name="java:app/myCF" resourceAdapter="wsmq" )
您可以使用 server 资源为本地代理 pooled-connection-factory 创建所需的目的地。
如果 resourceAdapter 元素指向 pooled-connection-factory 名称,并且它在本地代理中定义,例如 /subsystem/messaging-activemq/server=default,则它会在本地 Artemis 代理中创建目的地。
如果您需要在基于 Artemis 的远程代理中创建目的地,则必须在 messaging - 。
activemq 子系统中定义 pooled-connection- factory
如果 @JMSDestinationDefinition 注释 中设置 的 resourceAdapter 元素与 messaging-activemq 子系统中为 服务器 定义的 resourceAdapter 元素匹配,则在此代理中创建目的地,无论 pooled-connection-factory 中的连接器指向本地还是远程 Artemis 代理。
使用 JMSDestinationDefinition 注解配置 Jakarta 消息传递资源
创建连接器:
/subsystem=messaging-activemq/remote-connector=remote-amq:add(socket-binding="messaging-remote-throughput")创建池连接工厂:
/subsystem=messaging-activemq/pooled-connection-factory=activemq-ra-remote:add(entries=["java:/jms/remote-amq/JmsConnectionFactory"],connectors=["remote-amq"])为
ee子系统定义默认的 Jakarta Messaging 连接工厂:/subsystem=ee/service=default-bindings:write-attribute(name=jms-connection-factory, value="java:/jms/remote-amq/JmsConnectionFactory")在应用程序代码中使用
@JMSDestinationDefinition注释:@JMSDestinationDefinition( name = "java:/jms/queue/MessageBeanQueue", interfaceName = "javax.jms.Queue", destinationName = "MessageBeanQueue" properties= { "management-address=remote-activemq.management" } )
31.4.3. 使用管理控制台配置远程 ActiveMQ 服务器资源 复制链接链接已复制到粘贴板!
您可以从管理控制台配置以下远程 ActiveMQ 服务器资源:
- 通用连接器
- 在 VM Connector 中
- HTTP 连接器
- 远程连接器
- 发现组
- 连接事实
- 池的连接事实
- 外部 JMS Queue
- 外部 JMS 主题
从管理控制台配置远程 ActiveMQ 服务器资源:
-
访问管理控制台,再导航到 Configuration
Subsystems Messaging(ActiveMQ) Remote ActiveMQ Server 并点 View。 - 在导航窗格中,点击您要配置的资源。