是否可以通过更改配置来重新使用连接到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&jms.watchTopicAdvisories=false&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
1条答案
按热度按时间u59ebvdq1#
从技术上讲,您实际上不需要更改JBoss EAP中的任何内容,因为ActiveMQ Artemis支持ActiveMQ“Classic”使用的OpenWire协议。