【问题标题】:Removing camel route is not removing tibco queue receivers count删除骆驼路线不会删除 tibco 队列接收器计数
【发布时间】:2017-02-22 19:50:55
【问题描述】:

我们有一个独立的应用程序,我们应该能够使用数据库配置动态地建立 JMS 侦听器。如果数据库中的 concurrentConsumers 计数有任何变化,那么我们需要相应地更新监听器。我们正在使用骆驼 2.16.2 和 Tibco 6.3.0。确切地说,以下是我们的要求。

  1. 能够动态添加和删除 JMS 侦听器。 为了实现这一点,我们正在创建我们的 OwnRouteBuilder(它扩展了 camel RouteBuilder)并使用 camelContext.addRoutes(RouteBuilder) 动态添加它,它按预期工作。

  2. 能够动态增加或减少 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


    【解决方案1】:

    您可以在运行时使用 JMX 动态更改 concurrentConsumer 计数,以设置端点上 JMX 属性的值。然后路线不必停止/删除/启动等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-05
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多