Mule: обогащение заголовка с помощью метода Spring bean

Я пытаюсь обогатить сообщение мула текстовым кодом переменной сеанса с помощью Spring bean. Код потока

<spring:beans>
    <spring:bean id="enrichService" class="com.enrich.EnricherService"/>
</spring:beans>
<flow name="HeaderEnricherFlow1" doc:name="HeaderEnricherFlow1">
    <file:inbound-endpoint path="C:/txtFile" responseTimeout="1000" doc:name="Inbound File"/>
    <byte-array-to-string-transformer doc:name="Byte Array to String"/>
    <enricher target="#[sessionVars:TextCode]" doc:name="Header Enricher">

     <core:component>
     <spring-object bean="enrichService"/>
     </core:component>
    </enricher>
    <logger level="INFO" doc:name="Logger" message="#[sessionVars:TextCode]"/>
</flow>

EnrichService метод

public String enrichmentResource (@Payload String payload) {

    System.out.println("Payload:::::::::" + payload);

    String result="Text3";

    return result;
}

Я возвращаю значение, которое мне нужно установить в переменной сеанса TextCode из метода enrichmentResource класса обслуживания EnrichService, но оно не установлено.


person NAZAR REHMAN    schedule 04.01.2015    source источник


Ответы (2)


Формат, который вы упомянули, правильный, и использование enritcher - самый разборчивый способ написать это. Однако я бы подумал об удалении основного префикса компонентного элемента, поскольку он излишний, учитывая, что вы уже используете ядро ​​ns в качестве корневого пространства имен.

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

person Víctor Romero    schedule 04.01.2015
comment
Да, производительность - очень важное требование. Как я могу получить сообщение в весеннем бине. Мне нужно реализовать Callable и получить сообщение из MuleEventContext или есть другой способ. Просьба уточнить. - person NAZAR REHMAN; 04.01.2015
comment
Вы можете использовать выражение в аннотации mulesoft.org/documentation/display/current/ Mule + Annotation, но для повышения производительности я бы предпочел использовать Callable, если это не проблема, потому что у вас есть требование не изменять код компонента. - person Víctor Romero; 05.01.2015

Я добился этого с помощью выражения "# [sessionVars ['TextCode']]". Ранее использовалось выражение с неправильным синтаксисом "# [sessionVars: TextCode]".

person NAZAR REHMAN    schedule 04.01.2015