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

368yc8dk  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(209)

是否可以通过更改配置来重新使用连接到ActiveMQ“Classic”的现有代码来连接到ActiveMQ Artemis?如果是,需要修改的重要参数是什么?
当前的软件部署在JBoss EAP 7.4.2上,并与2个远程ActiveMQ“Classic”服务器通信,这些服务器提供故障转移/ha支持。
在新的架构中,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
u59ebvdq

u59ebvdq1#

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

相关问题