在使用routeBuilder配置JMS路由器时,应确保在camelContext中启用了事务管理器并将transacted属性设置为true。如果事务管理器未正确启用,则会发出上述DEBUG消息。
示例代码:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory();
connectionFactory.setBrokerURL(brokerURL);
PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setConnectionFactory(connectionFactory);
pooledConnectionFactory.setMaxConnections(8);
JmsConfiguration jmsConfig = new JmsConfiguration(pooledConnectionFactory);
jmsConfig.setTransacted(true);
CamelContext context = new DefaultCamelContext();
context.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(jmsConfig));
context.addRoutes(new MyRouteBuilder());
// Ensure that transaction management is enabled
JmsTransactionManager transactionManager = new JmsTransactionManager();
transactionManager.setConnectionFactory(connectionFactory);
transactionManager.afterPropertiesSet();
context.getTransactionTemplate();
context.start();
在上述代码示例中,我们创建了一个名为“jms”的JMS组件,并通过JmsConfiguration将其配置为启用事务,并将在MyRouteBuilder中使用。
同时,我们还创建了一个JmsTransactionManager实例并将其设置为启用连接工厂,以确保正确启用事务管理。最后,我们获取了交易模板以说明事务管理器已正确启用。