骆驼,public 静态变量和处理器
Camel, public static variables and processors
在骆驼处理器中,我设置了两个名称为 属性 的静态变量:
public static final String CI_PROPERTY = "ci";
public static final String IS_PDF_PROPERTY = "isPdf";
我分配如下:
exchange.setProperty(CI_PROPERTY, documentProperties.get(MAP_PARAMETER_ATTACHMENT_URI));
exchange.setProperty(IS_PDF_PROPERTY, documentProperties.get(MAP_PARAMETER_IS_PDF));
这些名称应该在其他处理器中用于检索属性。
问题是:其他处理器可以访问这些名称吗?或者我应该将它们移动到另一个 class?万一,在哪里?
是的,您可以这样做,如下所示:
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class FooProcessor implements Processor {
public static final String FOO_PROPERTY = "FOO";
@Override
public void process(Exchange exchange) throws Exception {
exchange.setProperty(FOO_PROPERTY, "This is a Foo property.");
}
}
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class BarProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getMessage().setBody(exchange.getProperty(FooProcessor.FOO_PROPERTY, String.class));
}
}
from("direct:mainRoute")
.routeId("MainRoute")
.log("MainRoute BEGINS: BODY: ${body}")
.process(new FooProcessor())
.process(new BarProcessor())
.log("MainRoute ENDS: BODY: ${body}")
.end()
;
当上面的路由 运行 时,将按预期记录以下内容:
MainRoute BEGINS: BODY:
MainRoute ENDS: BODY: This is a Foo property.
但是我认为处理器不应该对其他处理器具有编译时间(也不 运行时间)依赖性。像往常一样将公共部分重构为处理器使用的另一个 class。
在骆驼处理器中,我设置了两个名称为 属性 的静态变量:
public static final String CI_PROPERTY = "ci";
public static final String IS_PDF_PROPERTY = "isPdf";
我分配如下:
exchange.setProperty(CI_PROPERTY, documentProperties.get(MAP_PARAMETER_ATTACHMENT_URI));
exchange.setProperty(IS_PDF_PROPERTY, documentProperties.get(MAP_PARAMETER_IS_PDF));
这些名称应该在其他处理器中用于检索属性。
问题是:其他处理器可以访问这些名称吗?或者我应该将它们移动到另一个 class?万一,在哪里?
是的,您可以这样做,如下所示:
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class FooProcessor implements Processor {
public static final String FOO_PROPERTY = "FOO";
@Override
public void process(Exchange exchange) throws Exception {
exchange.setProperty(FOO_PROPERTY, "This is a Foo property.");
}
}
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class BarProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getMessage().setBody(exchange.getProperty(FooProcessor.FOO_PROPERTY, String.class));
}
}
from("direct:mainRoute")
.routeId("MainRoute")
.log("MainRoute BEGINS: BODY: ${body}")
.process(new FooProcessor())
.process(new BarProcessor())
.log("MainRoute ENDS: BODY: ${body}")
.end()
;
当上面的路由 运行 时,将按预期记录以下内容:
MainRoute BEGINS: BODY:
MainRoute ENDS: BODY: This is a Foo property.
但是我认为处理器不应该对其他处理器具有编译时间(也不 运行时间)依赖性。像往常一样将公共部分重构为处理器使用的另一个 class。