我正在使用 mule-4 中的 JMS 消耗组件轮询 JMS 队列。当队列中没有消息时,它正在打印 错误日志。我想避免错误日志。你能建议我们如何在 mule-4 中实现这一点吗
<flow name="docusign-message-reprocessing-reports-subflow" doc:id="f3ffe923-ee3e-4e0d-8a29-ec874b9755d7" >
<scheduler doc:name="Scheduler" doc:id="ff715c36-be3e-4f79-bdc9-db7934c75985" >
<scheduling-strategy >
<fixed-frequency timeUnit="HOURS" frequency="3" startDelay="1"/>
</scheduling-strategy>
</scheduler>
<logger level="INFO" doc:name="Logger" doc:id="66ef28f0-c4a6-4bec-b824-a51ce7e8ea79" message="@@@@ ---> scheduler triggered"/>
<jms:consume doc:name="Consume" doc:id="e63155ec-7563-4409-bd83-c66e6e1c792a" config-ref="AMQ-DocuSign-Connector" destination="#[Mule::p('amq.docusign.reports.bqueue')]" maximumWaitUnit="SECONDS" maximumWait="10">
<jms:consumer-type>
<jms:queue-consumer />
</jms:consumer-type>
</jms:consume>
<logger level="INFO" doc:name="Logger" doc:id="47cd3399-a84d-476e-b065-b58c6d94079d" message="printing payload #[payload]"/>
<choice doc:name="Choice" doc:id="ea7cbccb-6b47-456b-a2cb-c67561b53917">
<when expression="#[!isEmpty(payload)]">
<logger level="INFO" doc:name="Logger" doc:id="b8c49215-383f-45e3-aaf3-2b9511a53828" message="#["Moving messages from DLQ" ++ Mule::p('amq.docusign.reports.bqueue') as String ++ "to" ++ Mule::p('amq.docusign.reports.topic') as String]" />
<jms:publish doc:name="Publish" doc:id="44425d09-4ced-4a9d-a1c8-9c6259a2b6c9" destination="${amq.docusign.reports.topic}" config-ref="AMQ-DocuSign-Connector" destinationType="TOPIC" />
</when>
<otherwise>
<logger level="INFO" doc:name="Logger" doc:id="eb5f2d82-f0a3-4a8d-93f0-25ac4784e0fc" message="#["No message found in DLQ" ++ Mule::p('amq.docusign.reports.bqueue') as String ++ "!"]" />
</otherwise>
</choice>
<error-handler >
<on-error-continue enableNotifications="true" logException="true" doc:name="On Error Continue" doc:id="6443cb12-3b4e-4217-b559-f4ed22d2d27f" >
<logger level="INFO" doc:name="Logger" doc:id="db46b10a-2203-4acb-b65d-07cd674b3373" message="no message found in Dead letter Queue"/>
</on-error-continue>
</error-handler>
我收到以下错误消息,因为队列为空,没有要检索的消息
Message : Failed to retrieve a Message. Operation timed out after 10000 milliseconds
Element : docusign-message-reprocessing-reports-subflow/processors/1 @ wbg-itsen-docusign-connect:docusign-reports-reprocess.xml:16 (Consume)
Element DSL : <jms:consume doc:name="Consume" doc:id="e63155ec-7563-4409-bd83-c66e6e1c792a" config-ref="AMQ-DocuSign-Connector" destination="#[Mule::p('amq.docusign.reports.bqueue')]" maximumWaitUnit="SECONDS" maximumWait="10">
<jms:consumer-type>
<jms:queue-consumer></jms:queue-consumer>
</jms:consumer-type>
</jms:consume>
Error type : JMS:TIMEOUT
FlowStack : at docusign-message-reprocessing-reports-subflow(docusign-message-reprocessing-reports-subflow/processors/1 @ wbg-itsen-docusign-connect:docusign-reports-reprocess.xml:16 (Consume))
(set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
我不希望每次触发调度程序时都在日志中打印此重复消息,我只想在队列中没有消息时丢弃该流。
您的
<on-error-continue>
显示 logException="true"
。更改为 false
以避免此错误日志。这与在问题评论中@jarus 建议的“错误继续”范围中取消选中“记录异常”相同。