【问题标题】:How to write dependent queries in MULE CE?如何在 MULE CE 中编写依赖查询?
【发布时间】:2015-06-02 06:07:07
【问题描述】:

我听说我们不能在一个流中编写两个 Inbound-endpoints,但下面是我的要求,第二个选择查询需要第一个查询有效负载值。当我运行这个给出一个例外。请让我知道是否有任何替代方式来写这个。


<flow name="Some">
<jdbc:inbound-endpoint queryKey="SelectSome"
connector-ref="ProConnector" doc:name="SomeFromPro"

pollingFrequency="10000" queryTimeout="-1">
<jdbc:transaction action="NONE" timeout="10" />
<jdbc:query key="SelectSome"
value="SELECT top 1 * from table1 where IsProcessed = 0" />
<jdbc:query key="SelectSome.ack"
value="update table1 set IsProcessed=1 where ID = #[map-payload:ID] " />
</jdbc:inbound-endpoint>    
<jdbc:inbound-endpoint queryKey="SelectSomeBR"
connector-ref="ProConnector" doc:name="SomeBRFromPro"
pollingFrequency="1000" queryTimeout="-1">
<jdbc:transaction action="NONE" timeout="10" />
<jdbc:query key="SelectSomeBR"
    value="SELECT * from table2 where IsProcessed = 0 and ParentID = #[map-payload:ID]" />
<jdbc:query key="SelectSomeBR.ack"
value="update table2 set IsProcessed=1 where ParentID = #[map-payload:ID] " />
</jdbc:inbound-endpoint>
.
.
.
.
</flow>

任何帮助将不胜感激。 谢谢。

【问题讨论】:

    标签: mule esb mule-component


    【解决方案1】:

    您需要为第二个查询使用 outbound 选择查询,例如:

    <jdbc:outbound-endpoint queryKey="SelectSomeBR"
      connector-ref="ProConnector" doc:name="SomeBRFromPro"
      pollingFrequency="1000" queryTimeout="-1"
      exchange-pattern="request-response">
      <jdbc:transaction action="NONE" timeout="10" />
      <jdbc:query key="SelectSomeBR"
        value="SELECT * from table2 where IsProcessed = 0 and ParentID = #[map-payload:ID]" />
      <jdbc:query key="SelectSomeBR.ack"
    value="update table2 set IsProcessed=1 where ParentID = #[map-payload:ID] " />
    </jdbc:outbound-endpoint>
    

    参考:https://developer.mulesoft.com/docs/display/current/JDBC+Transport+Reference#JDBCTransportReference-OutboundSELECTQueries

    PS。这种旧的表达式语法已过时:#[map-payload:ID] 改用 MEL:#[message.payload.ID]"(假设消息有效负载是一个带有名为 ID 的键的映射)。

    【讨论】:

    • 感谢您的回复。在这里它引导我添加两个出站端点语句。我的意思是我已经运行了一个插入出站语句。我们可以写两个出站端点吗?
    • 效果很好。但是在它无法访问 #[map-payload:ID] OR #[message.payload.ID] 值之后。请告诉我如何将消息有效负载与名为 ID 的键映射。
    • JDBC 选择端点之后的有效负载是一个 Map 列表,因此如果您想要第一行的 ID 列的值,请使用 #[message.payload[0].ID]
    • 它正在运行,但我无法确认出站选择查询正在选择值,因为 ack 查询未运行并且无法访问出站选择语句有效负载。
    • 如果可以的话,我们可以在这里写子流程吗,你能告诉我怎么做吗?
    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 2011-07-20
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多