我需要从给定的(作为Java中的Endpoint实例)FileEndpoint创建一个MasterEndpoint。
通常我创建一个扩展所需端点的类,并在构造函数或init方法中调用所有需要的setter(例如设置上下文)。
有时我会在路径构建器中创建一个使用getContext().getEndpoint("name", ClazzOfEndpoint.class)
的方法。
但是如何使用MasterEndpoint(最好不使用字符串文字/常量)?
扩展MasterEndpoint的问题是它使用的不寻常的构造函数。使用getEndpoint
的问题是:如何将返回的主端点连接到FileEndpoint?
答案 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);
使用字符串配置它会非常麻烦(并且容易出错)。