操作指南

数据格式 DSL

师成师成· 更新于 2026-09-28· 阅读 4 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Data Format DSL

Data Format DSL 是一个构建器 API,允许以类型安全的方式构造 Camel 数据格式。

Data Format DSL 仅作为 Java DSL 的一部分提供。

借助 dataFormat() 方法,可以直接从 RouteBuilder 访问该 DSL。

使用 Data Format DSL

在下面的示例中,使用传统方式创建了 CsvDataFormat,即显式实例化数据格式并通过 setter 进行配置:

仅 Java:使用传统方式创建 CSV 数据格式

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 中直接提供的工具方法,可以简化上面的代码:

仅 Java:使用 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:

仅 Java:使用数据格式 DSL 构建器配置 CSV 序列化

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

评论

登录后参与评论

正在加载评论…