java - Apache Camel 进程方法没有被调用
问题描述
我有一个包含大约 20 条记录的 csv 文件。我的目标是逐条读取 csv 文件,将其转换为 XML 并将 XML 作为消息发送到 ActiveMQ 队列。我正在使用 Apache Camel 执行此操作。
第一步:读取 csv 文件并使用 Apache Camel 将其转换为 XML。
下面是代码:
CamelContext _ctx = new DefaultCamelContext();
_ctx.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
System.out.println("Inside configure method.");
from("file:src/main/resources/data-sample.csv")
.process(new MyTransform())
.to("file:src/main/resources/fileName=emp.xml");
}
});
_ctx.start();
Thread.sleep(4000);
_ctx.stop();
class MyTransform implements Processor {
public void process(Exchange exchange) throws Exception {
System.out.println("In Process method");
String myString = exchange.getIn().getBody(String.class);
String[] lineSeparator = myString.split(System.getProperty("line.separator"));
StringBuffer sb = new StringBuffer();
for (String lineData : lineSeparator){
String[] commaSeparator = lineData.split(",");
sb.append("<equityFeeds>");
sb.append("<externalTransactionId>" + commaSeparator[0].toString() + "</externalTransactionId>");
sb.append("<clientId>" + commaSeparator[1].toString() + "</clientId>");
sb.append("<securityId>" + commaSeparator[2].toString() + "</securityId>");
sb.append("<transactionType>" + commaSeparator[3].toString() + "</transactionType>");
sb.append("<transactionDate>" + commaSeparator[4].toString() + "</transactionDate>");
sb.append("<sourceSystem>" + commaSeparator[5].toString() + "</sourceSystem>");
sb.append("<priorityFlag>" + commaSeparator[6].toString() + "</priorityFlag>");
sb.append("</equityFeeds>");
}
System.out.println("MyProcessor complete");
exchange.getIn().setBody(sb.toString());
}
}
在输出中它只打印
内部配置方法。
未调用 process 方法。为什么?怎么了?请指导我。这太烦人了。请帮忙。
解决方案
只是说它from("file:src/main/resources/")
的起始目录。如果您只想提取特定文件,请说from("file:src/main/resources?fileName=data-sample.csv")
此外,您的应用程序仅运行 4 秒,因为您只为此而睡觉。
推荐阅读
- c++ - C++用内部类的方法启动线程
- android - 有没有办法在安装后使用 Platstore 的动态交付在运行时下载本机库(.so)?
- python - 尽管使用信号,Django 没有在用户创建时创建用户配置文件
- vue.js - 使用 Vuetify 进行 Vue 测试。无法读取未定义的属性“标题”
- c - 如何制作用于创建库和输出文件的 makefile?
- c# - 按值排序的字典列表 C#
- python - Numpy ndarray 显示与数组不同的数据结构
- python - 如何将文件名作为键和文件中的行作为列表制作字典?
- c - 热衷于用 C 语言进行论证;gdb 没有显示错误,函数没有给出输出
- xamarin - Xamarin :: Android - 此处定义的原始属性