2017-02-03 84 views
0

Spring配置:骆驼动态路由器修改消息不起作用

<camelContext xmlns="http://camel.apache.org/schema/spring"> 
    <route> 
     <from uri="kafka:127.0.0.1:9092?topic=test1&amp;zookeeperHost=127.0.0.1&amp;zookeeperPort=2181&amp;groupId=group1&amp;serializerClass=kafka.serializer.StringEncoder"/> 
     <dynamicRouter> 
      <!-- use a method call on a bean as dynamic router --> 
      <method ref="compositorSlip" method="slip"/> 
     </dynamicRouter> 
    </route> 
</camelContext> 
<bean id="compositorSlip" class="com.maxent.routingcenter.DynamicRouterTest" /> 

滑方法:

public String slip(Exchange exchange, @Header(Exchange.SLIP_ENDPOINT) String previous) { 
    // just route one time, return null means to end. 
    if(previous != null){ 
     return null; 
    } 
    // I've tried two ways to modify the message body, but they both didn't work. 
    exchange.getOut().setBody("message modified!!!!!", String.class); 
    exchange.getIn().setBody("message modified!!!!!", String.class); 
    if (i++ % 2 == 0) { 
     return "file://test"; 
    } 
    return null; 
} 

我已经试过两种方式来修改邮件正文,但他们都没有工作。我如何修改邮件正文?使用处理器?

回答

1

您不能修改动态路由器(slip)中的消息。您需要使用消息转换EIP,例如调用bean /处理器等。

+0

我想在动态路由器之前添加处理器。我怎样才能让处理器的输出成为动态路由器的输入? –

+0

我已经在它们之间添加了一个vm组件。这是最佳做法吗? –

+0

只需在传票中返回两个端点,第一个是处理器,第二个是您想要执行的操作。您可以使用逗号分隔这两个端点。然后,第一个端点可以是可以更改消息的bean端点 –