【问题标题】:how to remove null payload from mule aggregation如何从 mule 聚合中删除空有效负载
【发布时间】:2014-10-01 16:26:00
【问题描述】:

我正在使用 mule 中的分散聚集来聚合两个有效负载。但问题是有时其中一个有效负载不包含任何值,那么聚合有效负载看起来像:

[{postalCode=7560, addressLine4=-1}, {NullPayload}]

如何删除空有效负载。或者我如何将聚合设置为仅在两个有效负载都包含值时聚合。

这是我的分散收集:

<scatter-gather doc:name="Scatter-Gather">
        <processor-chain>
            <http:outbound-endpoint exchange-pattern="request-response"
                method="GET"
                address="http://localhost:8080/service/address/postal/#[sessionVars['entityId']]"
                doc:name="HTTP" />
            <data-mapper:transform config-ref="JSON_To_Map_1"
                doc:name="JSON To Map" />
        </processor-chain>
        <processor-chain>
            <http:outbound-endpoint exchange-pattern="request-response"
                method="GET"
                address="http://localhost:8080/service/address/email/#[sessionVars['entityId']]"
                doc:name="HTTP" />
            <data-mapper:transform config-ref="JSON_To_Map"
                doc:name="JSON To Map" />
        </processor-chain>
    </scatter-gather>

所以基本上它的两个服务返回邮政地址和电子邮件地址。但有时没有电子邮件地址。那么有效载荷必须只包含邮政地址,而不是带有空有效载荷的邮政地址。

【问题讨论】:

  • 能否请您发布您的完整配置,以便提出建议
  • 如果有效负载之一为空,您希望聚合器做什么?
  • 您好,感谢您的回复。我已经添加了我的配置

标签: mule aggregation


【解决方案1】:

您尚未发布完整配置,因此根据您的问题,建议是:-

在 setter-getter 方法中,生成空有效负载的流程.. 在该流程结束时,您可以执行以下操作:- 使用选择路由器并检查有效负载是否为空,如

<choice doc:name="Choice">
      <when expression="#[message.payload.isEmpty()]">

如果它是 null .. 然后通过使用 set-payload 设置自定义有效负载来覆盖 null 有效负载,例如

<set-payload value="Your customised payload" doc:name="Set Payload"/>

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多