Apache camel 驼峰JMS组件,如何获取订阅回调?
我正在开发一个服务,需要使用Camel JMS 2.17.0动态订阅JMS队列 因此,我在运行时使用bean创建侦听路由:Apache camel 驼峰JMS组件,如何获取订阅回调?,apache-camel,jms,ibm-mq,Apache Camel,Jms,Ibm Mq,我正在开发一个服务,需要使用Camel JMS 2.17.0动态订阅JMS队列 因此,我在运行时使用bean创建侦听路由: // Bean: createCustomListenerNow String endpoint = "jms:queue:" + queueName + "&testConnectionOnStartup=true&exceptionListener=#listenerBuilder"; // camelConte
// Bean: createCustomListenerNow
String endpoint = "jms:queue:" + queueName +
"&testConnectionOnStartup=true&exceptionListener=#listenerBuilder";
// camelContext.addRoutes uses this RouteBuilder
@Override
public void configure() throws Exception {
from(endpoint)
.id(id)
.to("seda:processReply");
}
我的实际代理是Websphere MQ,如果我的帐户没有正确的权限,我可能会遇到异常。不幸的是,这发生在我的路线建成后
我的路线是这样的:
<route>
<from uri="direct:mock" />
<to uri="bean:createCustomListenerNow" /> <!-- I want to block here until subscription is OK -->
<to uri="bean:doSomethingThatRequiresTheListenerToBeProperlyRunning" />
</route>
在JMS组件创建新连接并成功订阅之前,是否有一种方法可以“阻止”?我没有设法找到一个回调或一个简单的方法来获取这些信息
我现在要做的是注册一个
javax.jms.ExceptionListener
并等待JMSException。如果在超时之前没有引发异常,我想订阅成功了。我不认为这种方法是坚如磐石,任何建议都是值得赞赏的
在我收到侦听器上的消息之前,我无法阻止,因为它可能会在数小时后到达,我需要用“侦听器设置正常”或“侦听器设置失败”之类的答复来完成当前交换。Alessandro,看起来您希望仅在满足某个前提条件(可以连接到QM)时才开始路由。您可以尝试实施一个路由策略,检查您是否可以连接到QM,并且只有在该策略有效的情况下,才开始您的路由。@SebastianBrandt我喜欢您的想法。我的先决条件是订阅队列。因此,我需要订阅一个事务,回滚该事务,并让Camel设置新的route/JMS侦听器。我要做些实验。