通过更改配置,使用 JBoss EAP 7.4 中现有的 ActiveMQ“经典”JCA RA 连接到 ActiveMQ Artemis 远程服务器

问题描述 投票:0回答:1

是否可以通过更改配置来重新调整连接到 ActiveMQ“Classic”的现有代码以连接到 ActiveMQ Artemis?如果是的话需要修改哪些重要参数?

当前软件部署在 JBoss EAP 7.4.2 上,并与 2 个提供故障转移/HA 支持的远程 ActiveMQ“经典”服务器通信。

在新架构中,ActiveMQ“经典”服务器将被 3 个独立的 ActiveMQ Artemis 服务器(版本 2.16.0)取代,它将提供故障转移/HA。将不会利用 JBoss EAP 中对嵌入式 ActiveMQ Artemis 的支持。

ActiveMQ 资源适配器设置:

    <subsystem xmlns="urn:jboss:domain:resource-adapters:6.0">
        <resource-adapters>
            <resource-adapter id="org.apache.activemq">
                <module slot="main" id="org.apache.activemq"/>
                <config-property name="RedeliveryBackOffMultiplier">3</config-property>
                <config-property name="ServerUrl">failover:(tcp://x.y.z.49:61616,tcp://x.y.z.50:61616)?randomize=false&amp;jms.watchTopicAdvisories=false&amp;timeout=3000</config-property>
                <config-property name="RedeliveryUseExponentialBackOff">false</config-property>
                <config-property name="UserName">user</config-property>
                <config-property name="MaximumRedeliveries">1</config-property>
                <config-property name="UseInboundSession">true</config-property>
                <config-property name="Password">password</config-property>
                <connection-definitions>
                    <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:/ConnectionFactory" enabled="true" tracking="false" use-java-context="true" pool-name="ConnectionFactory">
                        <config-property name="UseInboundSession">false</config-property>
                        <pool>
                            <min-pool-size>4</min-pool-size>
                            <max-pool-size>256</max-pool-size>
                            <prefill>true</prefill>
                        </pool>
                        <timeout>
                            <blocking-timeout-millis>12000</blocking-timeout-millis>
                            <idle-timeout-minutes>5</idle-timeout-minutes>
                        </timeout>
                    </connection-definition>
                </connection-definitions>

JNDI用于查找连接工厂,使用

InitialContext
如以下代码所示

import javax.inject.Inject;
import javax.jms.ConnectionFactory;
import javax.naming.InitialContext;

import javax.ejb.Singleton;
import javax.ejb.Startup;

@Singleton
@Startup
public class BootClass {
    ....
    @PostConstruct
    public void init() {
        try {
            // "java/ConnectionFactory" defined in resource adapter
            final ConnectionFactory cf = (ConnectionFactory) (new InitialContext()).lookup("java:/ConnectionFactory");
            
            // cf is used with Camel JMS component
java jboss jms activemq-artemis
1个回答
0
投票

从技术上讲,您实际上不需要更改 JBoss EAP 中的任何内容,因为 ActiveMQ Artemis 支持 ActiveMQ“Classic”使用的 OpenWire 协议。

© www.soinside.com 2019 - 2024. All rights reserved.