简单流程:使用JDBC和文件(在Mule中),但在循环中运行

简单流程:使用JDBC和文件(在Mule中),但在循环中运行,mule,mule-studio,Mule,Mule Studio,我使用JDBC入站端点,通过查询从mysql中提取值,最后将其放入文件中。我能够获取DB中的值。但我的流量是无限次运行的。有人能帮我吗。请查找我的配置xml。提前谢谢 <jdbc-ee:mysql-data-source name="MySQL_Data_Source" user="root" password="root" url="jdbc:mysql://localhost:3306/mydb" transactionIsolation="UNSPECIFIED" doc:name=

我使用JDBC入站端点,通过查询从mysql中提取值,最后将其放入文件中。我能够获取DB中的值。但我的流量是无限次运行的。有人能帮我吗。请查找我的配置xml。提前谢谢

<jdbc-ee:mysql-data-source name="MySQL_Data_Source" user="root" password="root" url="jdbc:mysql://localhost:3306/mydb" transactionIsolation="UNSPECIFIED" doc:name="MySQL Data Source"/>
<jdbc-ee:connector name="Database" dataSource-ref="MySQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database" transactionPerMessage="false"/>
<flow name="JDBCFlowFlow1" doc:name="JDBCFlowFlow1">
    <jdbc-ee:inbound-endpoint queryKey="employeeSelect" queryTimeout="-1" pollingFrequency="1000" connector-ref="Database" doc:name="Database">
        <jdbc-ee:query key="employeeSelect" value="select * from employeedetails"/>
    <jdbc-ee:transaction action="NONE"/> 
    </jdbc-ee:inbound-endpoint>
    <logger message="---------------Result: #[payload]------------------------" level="INFO" doc:name="Logger"/>
    <file:outbound-endpoint path="C:\Documents and Settings\Desktop\mule\OUTPUT FILE1" responseTimeout="10000" doc:name="File"/>
</flow>

根据JDBC传输的Mule文档:

“入站选择查询是定期执行的查询(根据连接器上设置的轮询频率)。”

所以你所经历的行为是意料之中的


避免定期轮询的一种可能策略是创建入站quartz端点,其中“repeatCount”设置为1,让mule“组件”负责实际的数据库检索。

使用带有Cron表达式的轮询组件将有助于任何此类scnearios,因为您可以根据需要安排轮询间隔。下面的链接帮助您根据需要决定Cron表达式


谢谢@geby的回复。但我不想定期从数据库中获取记录。只要一次,如果它没有循环运行就足够了。因此,如果JDBC在loop?中运行,我们不能将其用作select查询的入站端点(不使用quartz)?。也请阅读Mulesoft文档。您需要一种触发流的方法。您可以使用jdbc:inbound端点轮询数据库,也可以使用quartz调度jdbc:outbound端点。或者,您可以将另一个消息源放在jdbc前面:出站端点(如http)通过api或类似方式触发它,或者您也可以编写一个组件来获取端点并手动启动/停止它或其他。您的用例是什么?您希望如何以及何时运行此流?谢谢@RyanCarter我从您的简要解释中得到了答案。我是Mule的新手,将消息处理器作为一种POC进行探索,我陷入了上述场景。我尝试了上面提到的场景,并解决了它。