我有一个像这样的流程
'数据库入站端点',它会轮询(每5分钟一次)到mySQL数据库服务器并通过select-query获取结果集(自动成为当前有效负载,即#[message.payload])
'对于每个'组件和'Logger'组件,使用表达式#[message.payload]
现在,flow还有一个'Database-out-bound-endpoint'组件,它执行另一个select-query并获得结果集。
'对于每个'组件,其中包含'Logger'组件,表达式为#[message.payload]
注意:在记录器中,第一个DB的结果集正在打印。我的意思是第二个记录器也显示第一个查询本身的结果集。因为结果集存储为有效负载
所以,我的问题是
在上述场景中读取第二个数据库查询结果集的MEL是什么。
在流程中是否有另一种阅读结果集的方法
这是配置XML
<jdbc-ee:connector name="oracle_database" dataSource-ref="Oracle_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
<flow name="testFileSaveFlow3" doc:name="testFileSaveFlow3">
<poll frequency="1000" doc:name="Poll">
<jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="selectTable1" queryTimeout="-1" connector-ref="oracle_database" doc:name="get data from table 1">
<jdbc-ee:query key="selectTable1" value="SELECT * FROM TABLE1"/>
</jdbc-ee:outbound-endpoint>
</poll>
<foreach doc:name="For Each">
<logger message="#[message.payload]" level="INFO" doc:name="prints result-set of table1"/>
</foreach>
<jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="selectTable2" queryTimeout="-1" connector-ref="oracle_database" doc:name="get data from table 2">
<jdbc-ee:query key="selectTable2" value="SELECT * FROM TABLE2"/>
</jdbc-ee:outbound-endpoint>
<foreach doc:name="For Each">
<logger message="#[message.payload]" level="INFO" doc:name="prints result-set of table2"/>
</foreach>
</flow>
提前感谢。
答案 0 :(得分:1)
这不是MEL的问题。这是您的流逻辑的问题。
消息中没有第二个结果集。
JDBC出站端点是单向的。因此,Mule流不会等待流中间的第二个JDBC(出站)的回复(结果集)。所以第二次也是打印第一个结果集。
类型1:
Try making your JBDC outbound request-response instead of one-way.
类型2:
Try Mule Enricher to call the JDBC outbound to call the DB and store the result set into a varaible and try looping the varaible.
希望这有帮助。