You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为org.springframework.jms.connection.CachingConnectionFactory配置用户名密码

在Apache Camel中为CachingConnectionFactory配置ActiveMQ凭据

核心思路

CachingConnectionFactory仅作为连接缓存的包装器,不负责凭据管理。正确的做法是将用户名密码配置到它所包装的原生ActiveMQConnectionFactory实例上,再将该实例注入CachingConnectionFactory,最后关联到Camel的ActiveMQComponent。

具体实现方式

1. Java代码配置(推荐)

直接创建带凭据的原生ActiveMQ连接工厂,再用CachingConnectionFactory包装,最后绑定到Camel组件:

// 初始化原生ActiveMQ连接工厂并配置凭据
ActiveMQConnectionFactory activeMQConnFactory = new ActiveMQConnectionFactory();
activeMQConnFactory.setBrokerURL("tcp://localhost:61616");
activeMQConnFactory.setUserName("your-username");
activeMQConnFactory.setPassword("your-password");

// 用CachingConnectionFactory包装,配置缓存参数
CachingConnectionFactory cachingConnFactory = new CachingConnectionFactory(activeMQConnFactory);
cachingConnFactory.setSessionCacheSize(10); // 缓存会话数
cachingConnFactory.setCacheConsumers(true); // 开启消费者缓存

// 配置Camel的ActiveMQ组件并绑定到上下文
ActiveMQComponent activeMQComponent = new ActiveMQComponent();
activeMQComponent.setConnectionFactory(cachingConnFactory);

CamelContext context = new DefaultCamelContext();
context.addComponent("activemq", activeMQComponent);

2. Spring XML配置

如果使用Spring XML,可按如下方式配置:

<!-- 原生ActiveMQ连接工厂,配置凭据 -->
<bean id="activeMQConnFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="tcp://localhost:61616"/>
    <property name="userName" value="your-username"/>
    <property name="password" value="your-password"/>
</bean>

<!-- 缓存连接工厂,包装原生工厂 -->
<bean id="cachingConnFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <constructor-arg ref="activeMQConnFactory"/>
    <property name="sessionCacheSize" value="10"/>
    <property name="cacheConsumers" value="true"/>
</bean>

<!-- Camel的ActiveMQ组件,关联缓存工厂 -->
<bean id="activemq" class="org.apache.camel.component.activemq.ActiveMQComponent">
    <property name="connectionFactory" ref="cachingConnFactory"/>
</bean>

报错原因说明

直接给ActiveMQComponent设置用户名密码时,组件会尝试将凭据赋值给CachingConnectionFactory,但CachingConnectionFactory继承的SingleConnectionFactory并不支持直接配置用户名密码(它完全依赖底层连接工厂的凭据配置),因此会抛出SingleConnectionFactory does not support custom username and password错误。

内容的提问来源于stack exchange,提问作者simonalexander2005

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:52:35