CamelContext 在初始化 PooledConnectionFactory 时关闭
CamelContext is shutting down while initializing the PooledConnectionFactory
我正在尝试通过 camel cdi 使用 org.apache.activemq.pool.PooledConnectionFactor
初始化 ActiveMQComponent
。
使用 ActiveMQConnectionFactory
,这工作正常。
我还添加了一些日志并注意到当 PooledConnectionFactory
、CamelContext
正在关闭时。在构建和部署时
我用 JMSConfigurations
等尝试了许多不同的方法。但仍然没有任何运气。
这可能是什么原因?
错误日志。
17:45:07,043 INFO [org.apache.camel.impl.DefaultCamelContext] (MSC service thread 1-6) Apache Camel 2.19.3 (CamelContext: camel_cdi_context) is starting
17:45:07,044 INFO [org.apache.camel.management.ManagedManagementStrategy] (MSC service thread 1-6) JMX is enabled
17:45:07,064 INFO [org.wildfly.extension.camel] (MSC service thread 1-6) Camel context starting: camel_cdi_context
17:45:07,064 INFO [org.wildfly.extension.camel] (MSC service thread 1-2) Bound camel naming object: java:jboss/camel/context/camel_cdi_context
17:45:07,095 INFO [org.apache.camel.impl.DefaultRuntimeEndpointRegistry] (MSC service thread 1-6) Runtime endpoint registry is in extended mode gathering usage statistics of all incoming and outgoing endpoints (cache limit: 1000)
17:45:07,131 INFO [stdout] (MSC service thread 1-6) Creating ActiveMQ Component
17:45:07,131 INFO [stdout] (MSC service thread 1-6) createActiveMQComponent().connectionFactory : org.apache.activemq.ActiveMQConnectionFactory@6e871efa
17:45:07,131 INFO [stdout] (MSC service thread 1-6) createActiveMQComponent(). : mark-1
17:45:07,135 INFO [org.apache.camel.impl.DefaultCamelContext] (MSC service thread 1-6) Apache Camel 2.19.3 (CamelContext: camel_cdi_context) is shutting down
17:45:07,137 INFO [org.wildfly.extension.camel] (MSC service thread 1-6) Camel context stopped: camel_cdi_context
我可以继续使用 ActiveMQConnectionFactory 并以不同的方式处理最大连接数/超时。
但我喜欢最好的。
ActiveMQComponentProducer.java
@ApplicationScoped
public class ActiveMQComponentProducer {
@Produces
@Named("activemqx")
public ActiveMQComponent createActiveMQComponent() {
System.out.println("Creating ActiveMQ Component");
ActiveMQComponent activeMQComponent = ActiveMQComponent.activeMQComponent();
String connectionString = "tcp://localhost:61616";
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(connectionString);
System.out.println("createActiveMQComponent().connectionFactory : " + connectionFactory);
PooledConnectionFactory pooledConnectionFactory = null;
System.out.println("createActiveMQComponent(). : mark-1");
try {
pooledConnectionFactory = new PooledConnectionFactory(connectionFactory);
} catch (Exception e) {
System.out.println("createActiveMQComponent(). : "+e);
}
System.out.println("createActiveMQComponent(). : mark-2");
activeMQComponent.setConnectionFactory(pooledConnectionFactory);
return activeMQComponent;
}
}
- 骆驼版本:2.19
- Wildfly 版本:10.1.0
- 骆驼补丁版本:wildfly-camel-patch-4.9.0
您可能 运行 遇到了 class 加载问题。
在 WildFly-Camel 4.9.0 版本中,PooledConnectionFactory
不会自动导出到部署 class 路径。此问题已在未来版本中修复,并已通过此问题进行跟踪:
https://github.com/wildfly-extras/wildfly-camel/issues/2199
作为解决方法,您可以通过 jboss-deployment-structure.xml
描述符将 org.apache.activemq
的模块依赖项添加到您的部署中。将它放在 META-INF
中用于 JAR 部署或 WEB-INF
用于 WAR 部署。
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.apache.activemq" />
</dependencies>
</deployment>
</jboss-deployment-structure>
我正在尝试通过 camel cdi 使用 org.apache.activemq.pool.PooledConnectionFactor
初始化 ActiveMQComponent
。
使用 ActiveMQConnectionFactory
,这工作正常。
我还添加了一些日志并注意到当 PooledConnectionFactory
、CamelContext
正在关闭时。在构建和部署时
我用 JMSConfigurations
等尝试了许多不同的方法。但仍然没有任何运气。
这可能是什么原因?
错误日志。
17:45:07,043 INFO [org.apache.camel.impl.DefaultCamelContext] (MSC service thread 1-6) Apache Camel 2.19.3 (CamelContext: camel_cdi_context) is starting
17:45:07,044 INFO [org.apache.camel.management.ManagedManagementStrategy] (MSC service thread 1-6) JMX is enabled
17:45:07,064 INFO [org.wildfly.extension.camel] (MSC service thread 1-6) Camel context starting: camel_cdi_context
17:45:07,064 INFO [org.wildfly.extension.camel] (MSC service thread 1-2) Bound camel naming object: java:jboss/camel/context/camel_cdi_context
17:45:07,095 INFO [org.apache.camel.impl.DefaultRuntimeEndpointRegistry] (MSC service thread 1-6) Runtime endpoint registry is in extended mode gathering usage statistics of all incoming and outgoing endpoints (cache limit: 1000)
17:45:07,131 INFO [stdout] (MSC service thread 1-6) Creating ActiveMQ Component
17:45:07,131 INFO [stdout] (MSC service thread 1-6) createActiveMQComponent().connectionFactory : org.apache.activemq.ActiveMQConnectionFactory@6e871efa
17:45:07,131 INFO [stdout] (MSC service thread 1-6) createActiveMQComponent(). : mark-1
17:45:07,135 INFO [org.apache.camel.impl.DefaultCamelContext] (MSC service thread 1-6) Apache Camel 2.19.3 (CamelContext: camel_cdi_context) is shutting down
17:45:07,137 INFO [org.wildfly.extension.camel] (MSC service thread 1-6) Camel context stopped: camel_cdi_context
我可以继续使用 ActiveMQConnectionFactory 并以不同的方式处理最大连接数/超时。 但我喜欢最好的。
ActiveMQComponentProducer.java
@ApplicationScoped
public class ActiveMQComponentProducer {
@Produces
@Named("activemqx")
public ActiveMQComponent createActiveMQComponent() {
System.out.println("Creating ActiveMQ Component");
ActiveMQComponent activeMQComponent = ActiveMQComponent.activeMQComponent();
String connectionString = "tcp://localhost:61616";
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(connectionString);
System.out.println("createActiveMQComponent().connectionFactory : " + connectionFactory);
PooledConnectionFactory pooledConnectionFactory = null;
System.out.println("createActiveMQComponent(). : mark-1");
try {
pooledConnectionFactory = new PooledConnectionFactory(connectionFactory);
} catch (Exception e) {
System.out.println("createActiveMQComponent(). : "+e);
}
System.out.println("createActiveMQComponent(). : mark-2");
activeMQComponent.setConnectionFactory(pooledConnectionFactory);
return activeMQComponent;
}
}
- 骆驼版本:2.19
- Wildfly 版本:10.1.0
- 骆驼补丁版本:wildfly-camel-patch-4.9.0
您可能 运行 遇到了 class 加载问题。
在 WildFly-Camel 4.9.0 版本中,PooledConnectionFactory
不会自动导出到部署 class 路径。此问题已在未来版本中修复,并已通过此问题进行跟踪:
https://github.com/wildfly-extras/wildfly-camel/issues/2199
作为解决方法,您可以通过 jboss-deployment-structure.xml
描述符将 org.apache.activemq
的模块依赖项添加到您的部署中。将它放在 META-INF
中用于 JAR 部署或 WEB-INF
用于 WAR 部署。
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.apache.activemq" />
</dependencies>
</deployment>
</jboss-deployment-structure>