Имея Requirment фильтровать сообщения, если какая-то переменная сеанса является ложным или истиннымMule: Expression фильтр не работает
flow.xml
<spring:beans>
<spring:bean id="serviceBean" class="com.uidai.ServiceBean"/>
</spring:beans>
<flow name="messagefilterFlow1" doc:name="messagefilterFlow1">
<file:inbound-endpoint responseTimeout="10000" doc:name="File" path="D:/sample" />
<invoke object-ref="serviceBean" method="enrichFilter" doc:name="Invoke" methodArguments="#[sessionVars],#[message]"/>
<logger level="INFO" message="#[sessionVars['filter']]" doc:name="Logger"/>
<!--<message-property-filter pattern="#[sessionVars['filter']]=true" caseSensitive="true" doc:name="Message Property"/>-->
<expression-filter expression="#[sessionVars['filter']]" doc:name="Expression"/>
<file:outbound-endpoint responseTimeout="10000" doc:name="File" path="D:/sample2"/>
</flow>
Сервисный метод боб
public void enrichFilter(MessagePropertyMapContext mapContext, MessageContext messageContext){
mapContext.put("filter", false);
System.out.println("mapContext" + mapContext);
System.out.println("message Context:::" + messageContext);
}
Reading a file from inbound and setting a session variable in spring bean method. Wanted to filter the message on basis of filter value so that if filter value is true outbound file is not written and message is filtered. Even if filter value is true or false a lock is hold on file by inbound endpoint and processing stops.
Это работает только для исходящего свойства, а не для сеанса, если выражение = "# [header: filter = true]", но все же, если сообщение является фильтрованным файлом: блокировка входящего удержания в файле и освобождение блокировки. Даже он не генерирует исключение, когда сообщение фильтруется, поэтому я могу обработать его в стратегии исключения catch. –
Проблема решена после фильтра выражения wrappring в фильтре сообщения <выражение-фильтр выражение = "# [header: filter = true] "doc: name =" Выражение "/> message-filter> –