我手头有一个需求,我需要在运行时更改Mule Flow Threading Behavior,而不需要弹跳整个Mule容器。我想出了几种不同的方法来实现这一目标,但没有一种方法可以实现。
我尝试访问Mule Context Registry,从那里我试图查找" FlowConstructLifecycleManager"对象,以便我可以在那里点击并访问对象的线程配置文件并重置这些值,然后以编程方式停止和启动流程,以便在流程中应用更改。我陷入了这种方法,因为我无法从Mule Spring Registry或Transient Registry中获取FlowConstructLifecycleManager对象。我能够获得Flow对象,虽然它直接引用了FlowConstructLifecycleManager对象。但是,不幸的是,他们使这个对象受到保护,并且没有公开我们访问该对象的任何方法。
由于我无法直接从Mule实现的Flow类访问此FlowConstructLifecycleManager,因此我决定扩展此Flow类,并向其添加另一个公共方法,以便我可以通过编程方式从Flow对象访问FlowConstructLifecycleManager对象。但是,我仍然坚持这种方法,即使我将我的相同Flow类的版本打包并放入容器的lib / user文件夹中,它仍然没有拿起我的类的版本,并加载原来的版本。
如果我能找到解决第一个或第二个问题的方法,那将会有很大的帮助。
提前致谢, 专一
答案 0 :(得分:0)
在我们公司,我们正在构建一个仪表板,我们应该能够通过增加/减少流量的活动线程或改变花粉轮询频率来启动/停止任何流量或改变任何流量的处理能力。所有这些都应该在运行时完成,不会出现任何服务器停机。
无论如何,我终于让它工作了。我不得不修补mule-core jar并暴露一些对象,以便我可以到达线程配置文件对象并在运行时调整值并停止/启动流程以反映更改生效。我知道这有点乱,但它确实有效。
谢谢, 专一