Apache camel 如何在Camel多播中设置特定于端点的头值

Apache camel 如何在Camel多播中设置特定于端点的头值,apache-camel,Apache Camel,我想在多播组件中设置特定于端点的头值 XML DSL如下所示: <route> <from uri="direct:testRoute"/> <multicast strategyRef="MyAggregator" parallelProcessing="true"> <to uri="direct:call1"/> <!-- set the header MY_HEADER = "call_1" --> <to uri="d

我想在多播组件中设置特定于端点的头值

XML DSL如下所示:

<route>

<from uri="direct:testRoute"/>
<multicast strategyRef="MyAggregator" parallelProcessing="true">
<to uri="direct:call1"/> <!-- set the header MY_HEADER = "call_1" -->
<to uri="direct:call2/> <!-- set the header MY_HEADER = "call_2" -->
</multicast>

</route>


在多播路由中不能这样做。但在随后的直接路线中应该是简单的

<route>
  <from uri="direct:call1"/>
     <setHeader headerName="MY_HEADER"><simple>call1</simple></setHeader>
     .. do whatever
  </from>
</route>

电话1
.. 做任何事
否则,如果call1用于其他用途,并且您不知道何时将标头放入该路由中,请创建一个简单的准备路由:

<route>
   <from uri="direct:prepCall1"/>
     <setHeader headerName="MY_HEADER"><simple>call1</simple></setHeader>
     <to uri="direct:call1"/>
  </from>
</route>

电话1

作为第三个选项,即使不能将DSL(xml或java)放在多播列表中,也可以提供一个“onPrepareRef”处理器bean,将头添加到exchange中。但是一个处理器将处理所有多播端点。

有一个带有密钥交换的头。您可以看到响应来自两个端点中的哪一个。

感谢您的响应。我想我需要更多地考虑我的方法,因为我不能在多播列表中添加呼叫特定的头值。谢谢!我想这就是我想要的。。让我开始改变吧!
<route>
   <from uri="direct:prepCall1"/>
     <setHeader headerName="MY_HEADER"><simple>call1</simple></setHeader>
     <to uri="direct:call1"/>
  </from>
</route>