Apache Camel Endpoint-dsl 自定义组件名称
Apache Camel Endpoint-dsl custom component names
我正在尝试使用 Apache Camel 3 Endpoint DSL。到目前为止,这是我的代码。它工作正常。这是一个测试,所以它真的很简单。它从目录中读取并记录文件内容。
@Component
public class TestRoute extends EndpointRouteBuilder{
final String componentName = "file";
final String path = "/in/";
@Override
public void configure() throws Exception {
FileEndpointBuilder srcFileEndpoint = file(componentName, path);
from( srcFileEndpoint ).log(LoggingLevel.INFO, "body, ${body}");
}//configure
}//TestRoute
但是当我尝试更改组件的名称时。例如
final String componentName = "myCustomFileComponent";
我在控制台中收到以下错误
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: myCustomFileComponent:///in/ due to: No component found with scheme: myCustomFileComponent
从 here,我知道我可以为端点提供自定义名称,示例中的 myWMQ 和 myAMQ。例如,路由从一个目录读取并写入另一个目录,我希望每个组件都以不同的方式配置。但是,如果我指定自定义 componentName,则会出现错误。因为没有找到custonName组件。
我不知道它是否相关,但代码在 Spring 启动项目中
- Apache Camel 版本 3.4.0 Spring 引导版本 2.3.1
看来你没抓住重点。该部分解释了“相同类型的多个 Camel 组件是否以不同的名称注册”。这些是注册的骆驼组件,而不是端点的 uri。
据我所知,您不能在 apache camel 中使用动态路由端点,因为路由是在开始时创建的,并且这些端点不会在运行时更改。
如果您需要一条从不同端点读取的路由,您可以为它们创建路由并将它们路由到相同的端点,例如:
public class TestRoute extends RouteBuilder {
@Override
public void configure() {
from(component1)
.to("direct:myroute")
from(component2)
.to("direct:myroute")
from(component3)
.to("direct:myroute")
from("direct:myroute")
.log(LoggingLevel.INFO, "body, ${body}");
}
}
我正在尝试使用 Apache Camel 3 Endpoint DSL。到目前为止,这是我的代码。它工作正常。这是一个测试,所以它真的很简单。它从目录中读取并记录文件内容。
@Component
public class TestRoute extends EndpointRouteBuilder{
final String componentName = "file";
final String path = "/in/";
@Override
public void configure() throws Exception {
FileEndpointBuilder srcFileEndpoint = file(componentName, path);
from( srcFileEndpoint ).log(LoggingLevel.INFO, "body, ${body}");
}//configure
}//TestRoute
但是当我尝试更改组件的名称时。例如 final String componentName = "myCustomFileComponent";
我在控制台中收到以下错误
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: myCustomFileComponent:///in/ due to: No component found with scheme: myCustomFileComponent
从 here,我知道我可以为端点提供自定义名称,示例中的 myWMQ 和 myAMQ。例如,路由从一个目录读取并写入另一个目录,我希望每个组件都以不同的方式配置。但是,如果我指定自定义 componentName,则会出现错误。因为没有找到custonName组件。
我不知道它是否相关,但代码在 Spring 启动项目中
- Apache Camel 版本 3.4.0 Spring 引导版本 2.3.1
看来你没抓住重点。该部分解释了“相同类型的多个 Camel 组件是否以不同的名称注册”。这些是注册的骆驼组件,而不是端点的 uri。
据我所知,您不能在 apache camel 中使用动态路由端点,因为路由是在开始时创建的,并且这些端点不会在运行时更改。
如果您需要一条从不同端点读取的路由,您可以为它们创建路由并将它们路由到相同的端点,例如:
public class TestRoute extends RouteBuilder {
@Override
public void configure() {
from(component1)
.to("direct:myroute")
from(component2)
.to("direct:myroute")
from(component3)
.to("direct:myroute")
from("direct:myroute")
.log(LoggingLevel.INFO, "body, ${body}");
}
}