我需要生成一个大型文件,该文件将在Java中完成,因此一个方法被命中,服务转到存储库返回一个类型为X的列表作为Java对象。然后我需要将此列表放在一个文件中并将其发送到ftp服务器。
我知道我可以使用camel将文件放在ftp服务器上,但是想知道camel是否可以从Java对象生成文件然后放在ftp服务器上?
我的代码看起来像这样:
List<ObjectX> xList = someRepo.getListOfx();
所以我需要将xList写入文件并放在ftp服务器上。
答案 0 :(得分:1)
一般来说,要将POJO消息转换为基于文本(或二进制)的表示形式,您可以使用Camel Dataformat。在您的路线中,您将使用marshall
和unmarshall
关键字来执行转化。
有几种Camel数据格式可用于编组/解组CSV,包括CSV dataformat或Bindy dataformat(但在“数据格式”页面上,“平面数据结构编组”下列出了一些其他数据格式头)。 Bindy的一个优点是它还可以支持其他非结构化格式(例如固定宽度记录)
另请注意:
ObjectX
)ObjectX
)转换为Map
s(或使用Camel注册适当的TypeConverter
以自动执行此转换)以下是使用bindy的一个非常简单的示例:
package mypackage;
@CsvRecord(separator = ",")
public Class MyPojo {
@DataField(pos = 1) // first column in the CSV file
private int foo;
@DataField(pos = 2) // second column in the CSV file
private String bar;
// Plus constructors, accessors, etc.
}
// In the RouteBuilder :
DataFormat bindy = new BindyCsvDataFormat("mypackage");
from("...") // Message received as a List<MyPojo>
.marshal(bindy)
.to("ftp:...");