首页 > 解决方案 > Apache Camel:如何查看正文以确定文件格式

问题描述

我们收到 .csv 文件(通过 ftp 和电子邮件),每个文件都可以是几种不同格式之一(可以通过查看文件的第一行来确定)。我对 Apache Camel 相当陌生,但想实现一个基于内容的路由器并将每个路由器解组到相关的类。

我目前的解决方案是将文件分解为字符串列表,手动使用第一行确定文件类型,然后使用其余字符串创建相关实体实例。

有没有更清洁更好的方法?

标签: javacsvapache-camel

解决方案


您可以使用POJO 以最适合您的文件的任何方式实现类型检查。

public String checkFileType(@Body File file) {
    return determineFileType(file);
}

private String determineFileType(File file) {...}

像这样,您可以通过分离文件类型检查和处理的任何其他部分来保持您的路线清洁。因为文件类型检查只是元数据丰富。

例如,您可以通过调用 bean将返回值设置为消息头)

.setHeader("fileType", method(fileTypeChecker))

然后,您可以使用消息头轻松根据类型路由文件。

.choice()
    .when(header("fileType").isEqualTo("foo"))
    ...

推荐阅读