我有一个简单的Talend路线:
cMQConnectionFactory(mq config) - cJMS(从mq读取) - > cHttp(发送到另一台机器上的REST)
我希望能够根据消息内容更改cHttp目标(Uri)。消息是一个带有字段“地址”的JSON,我需要将消息发送到该地址。
Talend路由是否允许动态更改目的地?
或者我是否完全误解了这个概念,需要为每对消息“生产者 - 消费者”单独创建路由?
答案 0 :(得分:1)
我用`uri =“foobar”设置了一个cHttp,以便轻松找到生成代码中的设置。你可以看到它是在
中设置的public void configure() throws java.lang.Exception {
...
from(
"timer:cTimer_1" + "?period=" + 2500 + "&repeatCount=" + 10
+ "&delay=" + 1000)
.routeId("Route_cTimer_1")
.setHeader("CamelHttpMethod", constant("GET")).to("foobar")
.id("Route_cHttp_1");
}
不幸的是,这是在初始化期间完成的,因此价值是恒定的(就像调解中的几乎所有内容一样)
解决方案:
1)使用特定的目的地列表
您可以使用cMessageRouter
充当交换机,将消息发送到正确的cHttp(这意味着每个目的地cHttp
}
2)目的地未知
您可以使用Job来管理该动态目标,以生成您的URI并从那里发送请求。我不确定你是否可以从工作中获得价值(出于同样的原因)
答案 1 :(得分:0)
您可以使用cDSLProcessor组件轻松地执行此操作。根据您的数据动态设置一些标头,然后在DSLProcessor中写入.to("http://"+echange.getIn().getHeader("myheader")