这是用户在 2024-3-28 21:50 为 https://camel.apache.org/manual/dataformat-dsl.html 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?

 数据格式 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
使用预期配置构建数据格式