【发布时间】:2017-02-22 19:50:55
【问题描述】:
我们有一个独立的应用程序,我们应该能够使用数据库配置动态地建立 JMS 侦听器。如果数据库中的 concurrentConsumers 计数有任何变化,那么我们需要相应地更新监听器。我们正在使用骆驼 2.16.2 和 Tibco 6.3.0。确切地说,以下是我们的要求。
能够动态添加和删除 JMS 侦听器。 为了实现这一点,我们正在创建我们的 OwnRouteBuilder(它扩展了 camel RouteBuilder)并使用 camelContext.addRoutes(RouteBuilder) 动态添加它,它按预期工作。
能够动态增加或减少 JMS 侦听器。 为了实现这一点,最初我们尝试停止路由,更新 concurrentConsumers 计数,然后启动路由。只有当我们增加并发消费者数量时它才能正常工作。但是如果我们减少它就不起作用(它不会改变并发消费者数量)。我们仍然可以从 tibco 控制台看到相同的接收者数量。
作为替代解决方案,我们尝试使用 camelContext.stopRoute(routeId),然后使用 camelContext.removeRoute(routeId),以便我们稍后可以添加一条更新了 concurrentConsumers 计数的新路由。在这种情况下,虽然它阻止了路由消费消息,但它并没有改变来自 tibco 控制台的接收器计数。
我尝试了 camelContext.removeEndpoints(endpointUri)、camelContext.shutdownRoute(routeId)、camelContext.removeRouteDefinition(routedefinition) 方法。 但是所有这些方法只是阻止路由消费消息,而不是从 tibco 控制台清除这些接收器计数。 仅当我们终止应用程序时,来自 tibco 控制台的接收器计数才变为零。
有什么方法可以让我们从骆驼中获得它,以便那些来自 tibco 控制台的接收器计数为零。
【问题讨论】:
标签: apache-camel