Apache Camel:究竟是什么路由?

时间:2013-01-07 12:24:58

标签: java apache-camel

Apache Camel路线中的“促销单位”或流量是什么?意思是,实际被路由的对象是什么?一个MessageExchange

我问,因为我认为 Route由1 + Processor个端点组成,而Exchange(包含Message)实际上是通过所有端点进行路由的。

但似乎Exchange可以同时拥有入站和出站Message,这表示消息可以通过交换(而不是通过处理器移动的交换/端点)。有人可以帮助澄清为什么交换具有输入和输出消息,以及实际传递给每个处理器/端点的路由?

1 个答案:

答案 0 :(得分:5)

交换只是一条路径中消息的包装对象。

交换中的输入和输出消息用于处理不同的交换模式(MEP)。

通常,这用于返回答案(即请求/响应模式)的处理器/端点,在Camel中它名为InOut。然后,处理器/组件将从In参数读取请求,并在Out参数中设置响应。在路线的下一步中,Out将成为In。

如果您想在某处放置消息而不担心响应,可以使用ExchangePattern.InOnly

即使您在处理器中并希望转换消息,也可以对In消息进行操作,然后将其复制到Out。

“Camel in Action”一书中也对此进行了描述。

路由正在传递消息,而Exchange是一个访问对象,用于传递消息并访问某些全局元数据。