Mule消息.载荷和载荷

  • 本文关键字:消息 Mule mule
  • 更新时间 :
  • 英文 :


我有一个Mule表达式语言表达式:

<set-payload value="#[message.payload.hasNext() ? message.payload.next(): null]" doc:name="Set Payload"/>
<choice  doc:name="Choice">
  <when expression="#[message.payload != null]">

我正在尝试迭代ConsumerIterator,并得到错误

Execution of the expression "message.payload.hasNext() ? message.payload.next(): null" failed. (org.mule.api.expression.ExpressionRuntimeException)
org.mule.el.mvel.MVELExpressionLanguage:202 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/expression/ExpressionRuntimeException.html)
6. Execution of the expression "message.payload.hasNext() ? message.payload.next(): null" failed. (org.mule.api.expression.ExpressionRuntimeException). Message payload is of type: ConsumerIterator (org.mule.api.transformer.TransformerMessagingException)
org.mule.transformer.AbstractTransformer:135 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerMessagingException.html)

我的解决方案是重写没有message.前缀的代码:

<set-payload value="#[payload.hasNext() ? payload.next(): null]" doc:name="Set Payload"/>
<choice  doc:name="Choice">
  <when expression="#[payload is NullPayload]">
  1. #[message。载荷]和#[载荷]?

  2. 如果payloadNullPayload的一个实例,为什么payload.hasNext()不抛出Exception ?

从我读到的最佳实践是使用#[message.payload]而不是#[payload]

message.payloadpayload无差异。Payload是为了与Mule 2兼容而留下的快捷方式。

有时会有一个问题,这里和另一个之间的差异,只是小麻烦,但在这种情况下,我认为你应该尝试message.payload is NullPayload

我通过将set-payload分配给false或将String空而不是null来解决问题:

<set-payload value="#[message.payload.hasNext() ? message.payload.next(): 'none']" doc:name="Set Payload"/>

即使在批处理过程中分配null也无效,最好分配其他String。现在我可以使用#[message.payload]:

<logger message="Query: #[message.payload]" level="INFO" doc:name="Logger"/>

最新更新