如何以编程方式创建MasterEndpoint

时间:2017-06-26 13:59:53

标签: apache-camel fabric8

我需要从给定的(作为Java中的Endpoint实例)FileEndpoint创建一个MasterEndpoint。

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我找到了一种适合我需求的方式:

首先与它的孩子一起创建主终端:

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);

使用字符串配置它会非常麻烦(并且容易出错)。