如何在Apache Camel中为组件设置默认数据格式?
我有许多与不同ActiveMQ队列交互的路由。此刻所有的人都像
from("...")
.process(...)
.marshal().json() // (1)
.to("activemq:queue:...");
或
from("activemq:queue:...")
.unmarshal().json() // (2)
.process(...)
.to("...");
答案 0 :(得分:0)
您可以编组/解组使用对数据格式的命名引用,您可以在Camel注册表中对其进行一次定义(此处为“ myDefaultFormat”):
from("activemq:queue:...")
.unmarshal(myDefaultFormat)
这样,您不必到处重复.json() (但好的,您尚未重复命名的引用:-$)
答案 1 :(得分:0)
使用拦截器(基于克劳斯·易卜生的评论)
new RouteBuilder() {
@Override
public void configure() throws Exception {
// interceptors
interceptSendToEndpoint("activemq:queue:*")
.marshal()
.json();
interceptFrom("activemq:queue:*")
.unmarshal()
.json();
// routes
from("...")
.process(...)
.to("activemq:queue:...");
from("activemq:queue:...")
.process(...)
.to("...");
}
}
注意:
RouteBuilder
中的任何路由之前定义IllegalArgumentException
来说明情况。RouteBuilder
中定义。