Apache camel 如何模拟动态(toD)端点

Apache camel 如何模拟动态(toD)端点,apache-camel,Apache Camel,何乐而不为 假设我必须使用以下生产代码: from("file:/home/test/from/") .setHeader("targetDynamicEndpoint", constant("file:/home/test/to/")) .toD("${header.targetDynamicEndpoint}") 我如何能够模拟生产者端点(“toD”) 我可以猜测传递给“toD”的字符串,因为它是通过StringBoot属性设置的,在测试中,您可以使用并调用方法weaveByTyp

何乐而不为

假设我必须使用以下生产代码:

from("file:/home/test/from/")
  .setHeader("targetDynamicEndpoint", constant("file:/home/test/to/"))
  .toD("${header.targetDynamicEndpoint}")
我如何能够模拟生产者端点(“toD”)

我可以猜测传递给“toD”的字符串,因为它是通过StringBoot属性设置的,在测试中,您可以使用并调用方法weaveByType

例如:

camelContext.getRouteDefinition("routeId").adviceWith(camelContext, new AdviceWithRouteBuilder() {
        @Override
        public void configure() {
            weaveByType(ToDynamicDefinition.class).replace().to("mock:someMock")
        }
    });

MockEndpoint someMockEndpoint = camelContext.getEndpoint("mock:someMock", MockEndpoint.class);
或者,您甚至可以为生产者端点提供一个id,并在测试中使用方法weaveById,您可以使用并调用方法weaveByType

例如:

camelContext.getRouteDefinition("routeId").adviceWith(camelContext, new AdviceWithRouteBuilder() {
        @Override
        public void configure() {
            weaveByType(ToDynamicDefinition.class).replace().to("mock:someMock")
        }
    });

MockEndpoint someMockEndpoint = camelContext.getEndpoint("mock:someMock", MockEndpoint.class);

或者您甚至可以为生产者端点提供一个id,并使用weaveById方法

当路由中有多个toD时,如何进行编织,是否可以进行过滤?当路由中有多个toD时,如何进行编织,是否可以进行过滤?