Camel动态路由器修改消息不起作用

时间:2017-02-03 14:21:02

标签: java apache-camel

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" />

slip方法:

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 个答案:

答案 0 :(得分:1)

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