2017-02-03 6 views
0

Spring:Camel динамический маршрутизатор сообщение модификации не работают конфигурации

<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, например, вызов компонента/процессора и т. Д.

+0

Я хочу добавить процессор перед динамическим маршрутизатором. Как я могу сделать вывод процессора динамическим входом маршрутизатора? –

+0

Я добавил компонент vm между ними. Это лучшая практика? –

+0

Просто верните две конечные точки в промахе, первый - это процессор, второй - то, что вы хотите сделать. Вы можете разделить эти две конечные точки с помощью запятой. Тогда первая конечная точка может быть конечной точкой компонента, в которой вы можете изменить сообщение –

 Смежные вопросы

  • Нет связанных вопросов^_^