Camel动态端点在CSV中的每一行

时间:2014-05-09 09:34:44

标签: apache-camel

我正在使用camel.version:2.12.1

我有一条需要的路线

  1. 解析CSV文件
  2. 拆分每一行
  3. 对于每一行,我需要确定目标端点和记录需要路由这些目的地。
  4. 到目前为止,我有

      org.apache.camel.model.ProcessorDefinition.recipientList().method(beanInstance, "methodName")
    

    路由一个传入的Camel消息。

    如何在行级实现动态路由?

    提前致谢。

1 个答案:

答案 0 :(得分:0)

将拆分模式与自定义调度程序一起使用:

public class MessageRouter {
    public String routeTo(final String row) {
        String id;
        if (row.contains("1")) {
            id = "sub1";
        } else if (row.contains("2")) {
            id = "sub2";
        } else {
            id = "default";
        }
        return "direct:" + id;
    }
}

路线定义:

@Override
public void configure() {
    from("direct:start")
       .split(body().tokenize("\n"))
       .recipientList()
       .method(MessageRouter.class);

    from("direct:token1")
        .log("Token1: body = ${body}");

    from("direct:token2")
        .log("Token2: body = ${body}");

    from("direct:default")
        .log("default: body = ${body}");

}

测试:

ProducerTemplate template = context.createProducerTemplate();
template.sendBody("direct:start", "token1\ntoken2\ntoken3");  

这导致以下输出:

INFO  sub1: body = token1
INFO  sub2: body = token2
INFO  default: body = token3
相关问题