场景:
- CSV文件被发送到我的端点,Pojo将数据转换为java,并将消息发送到我的一个路由,比如说(“direct:consume”)路由,然后处理器处理该文件,操作消息并创建新的输出。
发布日期:
- 文件只包含代码中断的一行
- 文件包含多行代码
已尝试:
- 我试图找到一种方法来确定进入交换的记录量。getIn().getBody()
- 堆栈溢出时读取
- 阅读有关Exchange camel文档
- 在不知道记录数量的情况下检查Java代码中的对象/对象到列表转换
编码:
public void process(Exchange exchange) throws Exception {
List<Cars> output = new ArrayList<Cars>();
**List<Wehicle> rows = (List<Wehicle>) exchange.getIn().getBody(); <-- Fails**
for (Wehicle row: rows) {
output.add(new Cars(row));
}
exchange.getIn().setBody(output);
exchange.getIn().setHeader("CamelOverruleFileName", "CarEntries.csv");
}
韦希勒
...
@CsvRecord(separator = ",", skipFirstLine = true, crlf = "UNIX")
public class Wehicle {
@DataField(pos = 1)
public String CouponCode;
@DataField(pos = 2)
public String Price;
}
...
汽车
@CsvRecord(separator = ",", crlf = "UNIX", generateHeaderColumns = true)
public class Cars {
@DataField(pos = 1, columnName = "CouponCode")
private String CouponCode;
@DataField(pos = 2, columnName = "Price")
private String Price;
public Cars(Wehicle origin) {
this.CouponCode = Utilities.addQuotesToString(origin.CouponCode);
this.Price = origin.Price;
}
}
输入:
"CouponCode","Price"
"ASD/785", 1900000
"BWM/758", 2000000
问题:
- 如何创建一个动态列表,无论我得到一个对象还是多个对象?-- exchange.getIn().getBody()返回对象
- 如何检查 Camel 交换消息中的记录数量?-- exchange.getIn().getBody()没有大小/长度方法
- 还有别的办法吗?
很久没有用java了,再加上对camel很陌生。
1条答案
按热度按时间luaexgnf1#
在重新检查官方文档后,似乎以下更改解决了该问题。
编码: