我是骆驼的新手。
当我收到对端点的请求时,应开始骆驼流。 RequestBody是流(InputA)的输入。
请让我知道如何开始:
InputA -> ProcessA -> OutputA
OutputA -> ProcessB -> OutputB
OutputB -> ProcessC -> OutputC
仅作为示例:
public class ProcessA{
public String methodA(String arg){
return arg;
}
}
public class ProcessB{
public String methodB(String arg){
return arg;
}
}
public class ProcessC{
public String methodC(String arg){
return arg;
}
}
如何使用Camel数据流传递输入和输出。
任何帮助或链接将不胜感激。
答案 0 :(得分:1)
我建议您阅读Camel in action这本书。例子很多,源代码也是可以唤醒的。当我开始学习骆驼时,我发现这本书非常有用。
除了Cluas回答外,我还可以添加一个示例:
public class Example
{
public static void main(String[] args) throws Exception
{
CamelContext context = new DefaultCamelContext();
context.addRoutes(new RouteBuilder()
{
@Override
public void configure() throws Exception
{
from("InputA").process(exchange -> {
//This is process A.
}).to("OutputA");
from("OutputA").process(exchange -> {
//This is process B.
}).to("OutputB");
from("OutputB").process(exchange -> {
//This is process C.
}).to("OutputC");
}
});
context.start();
//let camel complite his job
Thread.sleep(2000);
context.stop();
}
}
答案 1 :(得分:0)
您可以构建3条骆驼路线,然后使用一些队列组件将它们分开,例如内部直接(通过直接方法调用而没有队列)或色达队列。
伪路由类似于:
from("someInput").process(...).to("seda:a")
from("seda:a").process(...).to("seda:b");
from("seda:b").process(...).to("seda:c");
答案 2 :(得分:0)
比方说,您从文件中读取了Json,并且想要在处理器中对其进行处理。像这样:
from("file:/C:/TEST/")
.process(new MyProcessor())
.to("direct:anotherRouter");
MyProcessor 类是实现Processor的一种特殊类型。您需要覆盖 process 方法。
public class MyProcessor implements Processor{
@Override
public void process(Exchange exchange) throws Exception {
}
}
在骆驼路线中,数据在体内。要在处理器中获取数据,您应该从主体获取数据。在示例中,是这样的
public class MyProcessor implements Processor{
@Override
public void process(Exchange exchange) throws Exception {
String data = exchange.getIn().getBody(String.class);
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(data);
//TODO: All the stuff you want to do with the data.
}
}