Mule ESB:无法使用map-payload在When中路由消息

时间:2013-11-23 22:47:50

标签: mule esb

<jdbc-ee:inbound-endpoint   queryTimeout="-1" doc:name="Database" connector-ref="jdbcConnector" queryKey="selectAll" pollingFrequency="10000">
            <jdbc-ee:transaction action="NONE"/>
    </jdbc-ee:inbound-endpoint>
   <foreach doc:name="Foreach">
<choice doc:name="Choice">
<when expression="#[map-payload:destination] == SFO" >
      <processor-chain doc:name="Processor Chain"> 

    <logger level="INFO" message="Print 1"/>
            </when> 
<otherwise>
    <logger level="INFO" message="Print 2"/> 
       </otherwise> 
  </choice>

</foreach>

当我尝试基于map-payload进行过滤时,我发现它总是遇到其他条款&amp;即使map-payload包含SFO作为目标,也不是when子句。我的表情有什么问题?

这是Log,你可以看到它总是在记录器中,否则永远不会在。

INFO  2013-11-23 14:51:33,966 [[ConfluexDemo].ExpreFlow2.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Print 2
INFO  2013-11-23 14:51:33,967 [[ConfluexDemo].ExpreFlow2.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Print 2
INFO  2013-11-23 14:51:43,955 [[ConfluexDemo].ExpreFlow2.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Payload is {DESTINATION=LAX, PRICE=5, ID=3}
INFO  2013-11-23 14:51:43,955 [[ConfluexDemo].ExpreFlow2.stage1.03] org.mule.api.processor.LoggerMessageProcessor: Payload is {DESTINATION=SFO, PRICE=10, ID=2}
INFO  2013-11-23 14:51:43,956 [[ConfluexDemo].ExpreFlow2.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Destination is MLT
INFO  2013-11-23 14:51:43,957 [[ConfluexDemo].ExpreFlow2.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Price is 1200
INFO  2013-11-23 14:51:43,957 [[ConfluexDemo].ExpreFlow2.stage1.03] org.mule.api.processor.LoggerMessageProcessor: Destination is SFO
INFO  2013-11-23 14:51:43,958 [[ConfluexDemo].ExpreFlow2.stage1.03] org.mule.api.processor.LoggerMessageProcessor: Price is 500
INFO  2013-11-23 14:51:43,959 [[ConfluexDemo].ExpreFlow2.stage1.03] org.mule.api.processor.LoggerMessageProcessor: Print 2
INFO  2013-11-23 14:51:43,961 [[ConfluexDemo].ExpreFlow2.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Print 2
INFO  2013-11-23 14:51:43,962 [[ConfluexDemo].ExpreFlow2.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Print 2
INFO  2013-11-23 14:51:43,963 [[ConfluexDemo].ExpreFlow2.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Print 2
INFO  2013-11-23 14:51:43,965 [[ConfluexDemo].ExpreFlow2.stage1.03] org.mule.api.processor.LoggerMessageProcessor: Print 2
INFO  2013-11-23 14:51:43,966 [[ConfluexDemo].ExpreFlow2.stage1.03] org.mule.api.processor.LoggerMessageProcessor: Print 2

1 个答案:

答案 0 :(得分:0)

不推荐使用

map-payload:如果有效负载是地图,您可以直接使用MEL获取其值。

假设您有一个名为text的{​​{1}}列,则以下内容应该有效:

destination

这是有效的,因为您使用<when expression="#[message.payload.destination == 'SFO']" > 迭代此表达式周围的行。