Apache 骆驼测试。删除 RoutePolicy
Apache Camel tesing. Remove RoutePolicy
这是 Apache Camel 路由:
ZooKeeperRoutePolicy routePolicy = new ZooKeeperRoutePolicy("zookeeper:localhost:2181/fuse-example/routePolicy", 1);
from("file:camelInpit").routeId("systemARoute")
.routePolicy(routePolicy)
.log(LoggingLevel.ERROR, "Starting route")
[...]
我想在我的测试中删除 routePolicy,因为在测试环境中没有 ZooKeeper,但这并不像看起来那么容易
context.getRouteDefinition("systemARoute").adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
replaceFromWith("direct:aaa");
weaveByType(RouteDefinition.class).selectIndex(1).remove();
}
});
weaveById("policy")
并设置 id routePolicy(...).id("policy")
没有帮助。
如何在测试时动态删除 RoutePolicies
?
难道不能做这样的事情吗?
from("file:camelInpit").routeId("systemARoute")
.choice()
.when(prodEnvironmentExpression)
.routePolicy(routePolicy)
.endChoice()
.end()
.log(LoggingLevel.ERROR, "Starting route")
如果将其绑定到上下文,则可以通过使用轻松地在测试中模拟策略,其中 myPolicy 是模拟或不执行任何操作的策略。
如果你创建一个抽象的 MyCamelTestSupport 覆盖它然后你所有需要模拟它的测试扩展 MyCamelTestSupport
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry jndi = super.createRegistry();
jndi.bind("myPolicy", myPolicy);
return jndi;
}
您可以访问原始路由并将其路由策略设置为空
context.getRouteDefinition("systemARoute").adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
getOriginalRoute().setRoutePolicies(null);
}
});
但是我们也许应该为此添加流畅的 DSL 构建器以使其脱颖而出?
这是 Apache Camel 路由:
ZooKeeperRoutePolicy routePolicy = new ZooKeeperRoutePolicy("zookeeper:localhost:2181/fuse-example/routePolicy", 1);
from("file:camelInpit").routeId("systemARoute")
.routePolicy(routePolicy)
.log(LoggingLevel.ERROR, "Starting route")
[...]
我想在我的测试中删除 routePolicy,因为在测试环境中没有 ZooKeeper,但这并不像看起来那么容易
context.getRouteDefinition("systemARoute").adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
replaceFromWith("direct:aaa");
weaveByType(RouteDefinition.class).selectIndex(1).remove();
}
});
weaveById("policy")
并设置 id routePolicy(...).id("policy")
没有帮助。
如何在测试时动态删除 RoutePolicies
?
难道不能做这样的事情吗?
from("file:camelInpit").routeId("systemARoute")
.choice()
.when(prodEnvironmentExpression)
.routePolicy(routePolicy)
.endChoice()
.end()
.log(LoggingLevel.ERROR, "Starting route")
如果将其绑定到上下文,则可以通过使用轻松地在测试中模拟策略,其中 myPolicy 是模拟或不执行任何操作的策略。
如果你创建一个抽象的 MyCamelTestSupport 覆盖它然后你所有需要模拟它的测试扩展 MyCamelTestSupport
@Override
protected JndiRegistry createRegistry() throws Exception {
JndiRegistry jndi = super.createRegistry();
jndi.bind("myPolicy", myPolicy);
return jndi;
}
您可以访问原始路由并将其路由策略设置为空
context.getRouteDefinition("systemARoute").adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
getOriginalRoute().setRoutePolicies(null);
}
});
但是我们也许应该为此添加流畅的 DSL 构建器以使其脱颖而出?