Apache camel 如何在bindy组件中停止在单个文件中生成多个时间头列?
您好,我正在使用camel bindy组件处理一个CSV文件,其中我将数据分割为1000行块,并使用每个块生成其标题列,我需要它只使用单个文件生成一次。 我的路线: 还有我的OutputCSV.java pojoApache camel 如何在bindy组件中停止在单个文件中生成多个时间头列?,apache-camel,bindy,Apache Camel,Bindy,您好,我正在使用camel bindy组件处理一个CSV文件,其中我将数据分割为1000行块,并使用每个块生成其标题列,我需要它只使用单个文件生成一次。 我的路线: 还有我的OutputCSV.java pojo @CsvRecord(separator = ",",generateHeaderColumns=true) public class OutputCSV implements Serializable { private static final long serialVersio
@CsvRecord(separator = ",",generateHeaderColumns=true)
public class OutputCSV implements Serializable {
private static final long serialVersionUID = 1L;
@DataField(pos = 1, required = true)
private String product_id;
@DataField(pos = 2, required = true)
private String product_name;
//Getter and setter
}
我的问题是,我如何使这段代码为单个文件生成一次头文件 每行都有一个标题,因为您处理每一行并附加到文件中。在这种情况下,必须在第一行之后将
generateHeaderColumns
设置为false
,因为只有文件知道当前行是否为第一行
或者
generateHeaderColumns
设置为false
解组
获取对象列表(见下文)聚合策略。有关示例,请参阅并查找ArrayListAggregationStrategy.java
对于#3,unmarshal
的结果是一个地图列表,其中每个地图包含来自1个CSV行的模型对象(在您的情况下,每个地图应该只有1个对象)。然后您的bean可以迭代列表(而不是只处理一行),提取模型对象并将它们收集到一个列表中以再次封送它们。有关更多详细信息,请参阅解组
一节下的 我做了聚合,但我做错了。你能告诉我如何在DSL中使用聚合来收集所有数据块并一起封送吗?我已经用第三种变体和更多细节扩展了我的答案
@CsvRecord(separator = ",",generateHeaderColumns=true)
public class OutputCSV implements Serializable {
private static final long serialVersionUID = 1L;
@DataField(pos = 1, required = true)
private String product_id;
@DataField(pos = 2, required = true)
private String product_name;
//Getter and setter
}