我在Mule中有一个轮询过程,该过程每30秒查询一次MySQL数据库并向收件人发送一封电子邮件。无论轮询周期是30秒还是15秒,如何限制仅发送1封电子邮件?如果可以的话,我也会在mysql数据库中打开一个计数器。
谢谢。
最佳答案
编写一个条件,仅在emailSentFlag == false时才发送电子邮件。
使用选择路由器创建条件,并使用对象库保存emailSentFlag值。
<flow...>
....
<objectstore:retrieve config-ref="ObjectStore__Configuration" key="emailSentFlag" defaultValue-ref="#[false]" targetProperty="flowVars.emailSentFlag" doc:name="retrieve emailSentFlag"/>
<choice doc:name="IsEmailSent?">
<when expression="#[flowVars.emailSentFlag == true]">
<logger level="INFO" doc:name="Log Email Already Sent"/>
</when>
<otherwise>
<smtp:outbound-endpoint host="" user="" password="" to="" from="" subject="test" cc="" bcc="" replyTo="" responseTimeout="10000" ref="Gmail" doc:name="SMTP" connector-ref="Gmail"/>
<objectstore:store config-ref="ObjectStore__Configuration" key="emailSentFlag" value-ref="#[true]" doc:name="store emailSentFlag"/>
</otherwise>
</choice>
</flow>
还要探索对象库的TTL和持久性功能,这可能对您有用。
干杯