【问题标题】:MULE ENRICH with incoming pojoMULE ENRICH 与传入 pojo
【发布时间】:2012-05-24 06:43:23
【问题描述】:

我想添加一些关于传入 Pojo 的额外信息,我在 mule 中使用了消息丰富器并做到了,这是我的完整流程。我正在使用子流来获取有效负载并在数据库中选择一些值并将该值设置在同一个 pojo 中并返回,而在目标中我设置为有效负载但我收到这样的错误“未注册“有效负载的表达式丰富器”和骡子。”

这里是亩流

<enricher doc:name="Message Enricher">
        <core:flow-ref name="flows1Flow1" doc:name="Flow Reference"/>
        <enrich source="#[groovy:payload]" target="#[payload]"/>            

<logger message="AFTER Enrich: #[payload]" level="INFO" doc:name="Logger"/>
    <component class="com.enrich.AfterEnricher" doc:name="Java"/>


 <sub-flow name="flows1Flow1" doc:name="flows1Flow1">
    <component class="com.enrich.MessageEnrichPattern" doc:name="Java"/>
    <jdbc:outbound-endpoint exchange-pattern="request-response" queryKey="selectData" connector-ref="jdbcConnector" doc:name="Database (JDBC)">
        <jdbc:query key="selectData" value="SELECT Username, Password, ModuleId from Credentials where ModuleId=#[map-payload:moduleId]"/>
    </jdbc:outbound-endpoint>
    <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    <component class="com.enrich.ReceiveMessageEnrichPattern" doc:name="Java"/>
</sub-flow>

这里 ReceiveMessageEnrichPattern 返回

Credential credential = new Credential();
    credential.setUname(hashMap.get("USERNAME").toString());
    credential.setPwd(hashMap.get("PPPP").toString());
    credential.setMid(hashMap.get("MODULEID").toString());
    return credential;

但在丰富组件之后,我遇到了异常。请帮助我如何通过可以添加的额外信息来丰富我传入的 pojo。

【问题讨论】:

    标签: esb mule


    【解决方案1】:

    根据docs,Mule目前只支持两个目标进行富集:

    • 流变量,
    • 消息头。

    要实现您的目标,您需要:

    • 将扩充器结果(凭据对象)存储在流变量中,
    • 使用自定义转换器将值从流变量中找到的 Credential 对象复制到主流中的 POJO 负载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多