我为交换创建了一个拆分器,它解压缩文件并根据行数拆分它(使用 Unix 命令'split')。返回包含这些部分作为消息的消息列表。
然后在这些上设置一些属性,因为它们需要独立处理。在完成这些部分之后,还需要进一步处理父交换。现在,我也需要在子级上设置一些属性,以便在父级上设置。但我能想到的唯一方法是重写 setProperty 部分。有什么方法可以在没有冗余的情况下实现这一点。
我确实尝试了另一种方式,即在父级上设置属性并尝试在子级上访问它们也不起作用。
for (String feed: pc.parseUri("{{feedSources}}").split(",")) {
from("{{"+feed +".source}}").routeId(feed)
.setProperty("workDirectory", simple("{{workDirectory}}"))
.setProperty("feedName", simple(feed))
.setProperty("tableName", simple("{{"+feed+".tableName}}"))
.setProperty("options", simple("{{"+feed+".options}}"))
.split(beanExpression(new FileSplitter(), "split"))
.setProperty("dateFormat", simple("{{" + feed + ".dateFormat}}"))
.setProperty("headerFormat", simple("{{" + feed + ".headerFormat}}"))
.process(FileKeyProcessorFactory.getProcessor(feed))
.to("{{"+feed+".destination}}")
.end()
.process(new RSProcessor());
还有一些属性需要设置。重写代码似乎不太好。还有什么选择。