是否可以在初始化上下文后以编程方式添加新的Mule流?
我希望在Mule运行时(在初始化上下文之后)以编程方式添加新的RSS连接器流。当我尝试这样做时,我得到一个生命周期异常,表示上下文已经初始化是否可以在初始化上下文后以编程方式添加新的Mule流?,mule,Mule,我希望在Mule运行时(在初始化上下文之后)以编程方式添加新的RSS连接器流。当我尝试这样做时,我得到一个生命周期异常,表示上下文已经初始化 有没有办法在不重新启动整个上下文的情况下执行此操作?我自己想出了一个解决方案。事实证明,创建一个新的Mule上下文,添加我的流,然后启动上下文就可以了。事实上,这条路比我走的另一条路更简单、更快、更干净 创建一个默认的Mule上下文对我来说很好。如果您有特殊需要,可能需要向您的配置生成器中添加配置生成器 MuleContext newMuleContext
有没有办法在不重新启动整个上下文的情况下执行此操作?我自己想出了一个解决方案。事实证明,创建一个新的Mule上下文,添加我的流,然后启动上下文就可以了。事实上,这条路比我走的另一条路更简单、更快、更干净 创建一个默认的Mule上下文对我来说很好。如果您有特殊需要,可能需要向您的配置生成器中添加配置生成器
MuleContext newMuleContext = new DefaultMuleContextFactory().createMuleContext();
MuleRegistry registry = newMuleContext.getRegistry();
Flow flow = createFlow();
registry.registerFlowConstruct(flow);
newMuleContext.start();
编辑。下面是createFlow方法。您的具体信息将根据应用程序的需要而有所不同
protected Flow createFlow(MuleContext context, RssBean feed) throws Exception {
MuleRegistry registry = context.getRegistry();
String feedName = feed.getName();
HttpPollingConnector connector = getHttpPollingConnector(context, registry, feedName);
EndpointURIEndpointBuilder endpointBuilder = getEndpointBuilder(context, feed, registry, shortName, connector);
registry.registerEndpointBuilder(feedName + ".in", endpointBuilder);
MessagePropertiesTransformer transformer = getTransformer(context, feedName);
MessageProcessor mp = getOutboundFlowRef(context);
Flow flow = getFlow(context, shortName, endpointBuilder, transformer, mp);
registry.registerFlowConstruct(flow);
return flow;
}
createFlow方法看起来像什么?