java - Apache Camel:如何查看正文以确定文件格式
问题描述
我们收到 .csv 文件(通过 ftp 和电子邮件),每个文件都可以是几种不同格式之一(可以通过查看文件的第一行来确定)。我对 Apache 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"))
...
推荐阅读
- android - 在构建 FutureBuilder 时引发了以下 NoSuchMethodError
- static-libraries - 从使用动态共享库的应用程序中使用静态版本的 libc
- java - AlarmScheduler 在 Android Studio 中不工作/关闭警报
- postgresql - 无法使用 pg_archivecleanup 删除 WAL 归档文件
- javascript - 本地生成的文件如何工作以及如何实现它们?
- matrix - 矩阵分组列问题:列之间出现间隙
- heroku - 不能再在heroku上选择免费的dyno了
- ruby - Ruby 无法配置 Zlib 和其他扩展
- javascript - 反应导航栏没有显示
- deep-learning - 推断不同的补丁大小是否正确,而不是使用分割训练补丁大小?