【发布时间】:2020-03-24 05:31:50
【问题描述】:
我的目标是读取一个 CSV 文件,将其转换为 JSON,并将生成的 JSON 一个一个发送到 ActiveMQ 队列。我的代码如下:
final BindyCsvDataFormat bindy=new BindyCsvDataFormat(camelproject.EquityFeeds.class);
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
CamelContext _ctx = new DefaultCamelContext();
_ctx.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
_ctx.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
from("file:src/main/resources?fileName=data-sample.csv")
.unmarshal(bindy)
.marshal()
.json(JsonLibrary.Jackson).log("${body}")
.to("file:src/main/resources/?fileName=emp.json");
}
});
EquityFeeds 是我上面代码中的 POJO 类。
问题:
- 不产生任何输出。 “emp.json”文件不会在给定位置生成。
-
另外,我如何将生成的 JSON 拆分为单独的 JSON 并将其发送到 ActiveMQ 队列,就像我为 XML 所做的那样:
.split(body().tokenizeXML("equityFeeds", null)).streaming().to("jms:queue:xml.upstream.queue");
EquityFeeds (POJO):
@CsvRecord(separator = ",",skipFirstLine = true)
public class EquityFeeds {
@DataField(pos = 1)
private String externalTransactionId;
@DataField(pos = 2)
private String clientId;
@DataField(pos = 3)
private String securityId;
@DataField(pos = 4)
private String transactionType;
@DataField(pos = 5)
private Date transactionDate;
@DataField(pos = 6)
private float marketValue;
@DataField(pos = 7)
private String priorityFlag;
// getters and setters...
}
请帮忙。请告诉我哪里出错了。迫切需要帮助。卡在这个问题上,无法继续前进。任何帮助将不胜感激。我真的很努力,搜索了谷歌并尝试了各种选项,但没有任何效果。
请注意: 我评论了 .marshal() 和 .json() 以检查 .unmarshal() 是否正常工作,但 unmarshal 也不能作为“emp.json”工作" 没有被创建。
【问题讨论】:
标签: json csv apache-camel activemq