2017-02-03 119 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端點 –