我们有一个独立的应用程序,我们应该能够动态地使用数据库配置来支持JMS侦听器。如果数据库中的concurrentConsumers计数有任何变化,那么我们需要相应地更新监听器。我们使用的是camel 2.16.2和Tibco 6.3.0。确切地说,以下是我们的要求。
能够动态添加和删除JMS侦听器。 为了实现这一点,我们正在创建我们的OwnRouteBuilder(它扩展了camel RouteBuilder)并使用camelContext.addRoutes(RouteBuilder)动态添加它,它正在按预期工作。
能够动态增加或减少JMS侦听器。 为实现这一目标,我们最初尝试停止路由,更新concurrentConsumers计数,然后启动路由。只有当我们增加concurrentConsumers计数时它才能正常工作。但是如果我们减少(它不会改变并发消费者数量)它就无法工作。我们仍然可以从tibco控制台看到相同的接收器数量。
作为替代解决方案,我们尝试使用camelContext.stopRoute(routeId),然后尝试使用camelContext.removeRoute(routeId),以便我们可以在以后使用更新的concurrentConsumers计数添加新路由。在这种情况下,虽然它正在停止消费消息的路由,但它并没有改变tibco控制台的接收器数量。
我尝试使用camelContext.removeEndpoints(endpointUri),camelContext.shutdownRoute(routeId),camelContext.removeRouteDefinition(routedefinition)方法。 但是所有这些方法只是停止消费消息的路由,而不是从tibco控制台清除那些接收器。 仅当我们终止应用程序时,来自tibco控制台的接收器数量才变为零。
我们是否有任何方法可以从驼峰中获取它,以便从tibco控制台获得的接收器数量变为零。
答案 0 :(得分:0)
您可以使用JMX在运行时动态更改concurrentConsumer计数,以设置端点上JMX属性的值。然后不必停止/移除/启动路线等。