Apache Camel路线中的“促销单位”或流量是什么?意思是,实际被路由的对象是什么?一个Message
? Exchange
?
我问,因为我认为 Route
由1 + Processor
个端点组成,而Exchange
(包含Message
)实际上是通过所有端点进行路由的。
但似乎Exchange
可以同时拥有入站和出站Message
,这表示消息可以通过交换(而不是通过处理器移动的交换/端点)。有人可以帮助澄清为什么交换具有输入和输出消息,以及实际传递给每个处理器/端点的路由?
答案 0 :(得分:5)
交换只是一条路径中消息的包装对象。
交换中的输入和输出消息用于处理不同的交换模式(MEP)。
通常,这用于返回答案(即请求/响应模式)的处理器/端点,在Camel中它名为InOut。然后,处理器/组件将从In
参数读取请求,并在Out
参数中设置响应。在路线的下一步中,Out将成为In。
如果您想在某处放置消息而不担心响应,可以使用ExchangePattern.InOnly
。
即使您在处理器中并希望转换消息,也可以对In消息进行操作,然后将其复制到Out。
“Camel in Action”一书中也对此进行了描述。
路由正在传递消息,而Exchange是一个访问对象,用于传递消息并访问某些全局元数据。