Apache camel 如何以编程方式创建MasterEndpoint

Apache camel 如何以编程方式创建MasterEndpoint,apache-camel,fabric8,Apache Camel,Fabric8,我需要从给定的FileEndpoint(作为Java中的端点实例)创建MasterEndpoint 通常,我会创建一个扩展所需端点的类,并从构造函数或init方法中调用所有需要的setter(例如,设置上下文)。 有时,我会在route builder中创建一个使用getContext().getEndpoint(“name”,ClazzOfEndpoint.class)的方法 但是如何使用MasterEndpoint实现这一点(最好不使用字符串文字/常量)? 扩展的问题在于它使用了不同寻常的构

我需要从给定的FileEndpoint(作为Java中的端点实例)创建MasterEndpoint

通常,我会创建一个扩展所需端点的类,并从构造函数或init方法中调用所有需要的setter(例如,设置上下文)。 有时,我会在route builder中创建一个使用
getContext().getEndpoint(“name”,ClazzOfEndpoint.class)
的方法

但是如何使用MasterEndpoint实现这一点(最好不使用字符串文字/常量)?
扩展的问题在于它使用了不同寻常的构造函数。使用
getEndpoint
的问题是:如何将返回的主端点连接到FileEndpoint?

您不能真正做到这一点,因为主组件不是为以编程方式构建而设计的。您可以通过使用字符串uri配置端点来获取端点。这也是Camel中设置和定义端点的推荐方法。不要手动编程。

我找到了一种适合我需要的方法:

首先创建主端点及其子端点:

masterEndpoint = context.getEndpoint("master:fileLock:file:" + rootFolder, MasterEndpoint.class);
要以编程方式配置子终结点(在我的示例中为FileEndpoint),请从master获取并配置它:

fileEndpoint = (FileEndpoint) masterEndpoint.getEndpoint();
fileEndpoint.setAutoCreate(false);
fileEndpoint.setAntInclude(ANT_INCLUDE);
fileEndpoint.setMove(doneFolder);
fileEndpoint.setMoveFailed(errorFolder);

用字符串对其进行配置将非常麻烦(而且容易出错)

有没有一种方法可以使用给定的端点实例用字符串配置主组件?只需从字符串创建它,其中“master:someName:xxx”是端点的url感谢您的快速回复:那么它应该是:“master:someName:”+fileEndpoint.getUrl(不确定方法名称)?因为文件端点是单例的,所以它应该与其他地方使用和配置的文件端点相同,对吗?