数据格式 dsl
数据格式 DSL 是一个构建应用程序接口,允许使用类型安全的方式构建 Camel 数据格式。
数据格式 DSL 仅作为 Java DSL 的一部分提供。
通过 dataFormat()
方法,可以直接从 RouteBuilder
访问 DSL。.
使用数据格式 DSL
在下面的示例中, CsvDataFormat
是使用传统方法创建的,其中数据格式是显式实例化的,并使用设置器进行配置:
public class MyRoutes extends RouteBuilder {
@Override
public void configure() {
CsvDataFormat dataFormat = new CsvDataFormat(); (1)
dataFormat.setDelimiter("|"); (2)
from("direct:format")
.setBody(constant(Map.of("foo", "abc", "bar", 123)))
.marshal(dataFormat); (3)
}
}
1 | 实例化预期数据格式 |
2 | 根据需要配置数据格式 |
3 | 用预期配置影响数据格式 |
可以使用与 marshal()
和 unmarshal()
方法返回的类型相对应的 DataFormatClause
工具方法来简化前面的代码:
public class MyRoutes extends RouteBuilder {
@Override
public void configure() {
from("direct:format")
.setBody(constant(Map.of("foo", "abc", "bar", 123)))
.marshal()
.csv(); (1)
}
}
1 | 选择带有默认分隔符的 csv 数据格式 |
这种方法适用于非常基本的配置,但由于每种支持的数据格式都只有有限的实用程序方法,因此对于更复杂的配置,我们很快就会遇到预期配置的实用程序方法不存在的情况。在这种情况下,您可以使用传统方法或数据格式 DSL,就像下一个代码片段那样:
public class MyRoutes extends RouteBuilder {
@Override
public void configure() {
from("direct:format")
.setBody(constant(Map.of("foo", "abc", "bar", 123)))
.marshal(
dataFormat() (1)
.csv() (2)
.delimiter(",") (3)
.end() (4)
);
}
}
1 | 允许访问所有支持的数据格式 |
2 | 选择 csv 数据格式 |
3 | 根据需要配置数据格式 |
4 | 使用预期配置构建数据格式 |