Mule 4 - 消耗消息的空 VM 队列错误
Mule 4 - Empty VM queue error consuming messages
我在 Mule 4 中有一个流程,它从 CSV 文件中读取数据并使用 Batch
:
将其插入 Salesforce
所有 Salesforce 结果都插入到非持久性 VM 队列(默认为瞬时)。
为每个记录块插入所有消息,并在批处理结束时毫无问题地使用。
但是,当我完成后,10秒后出现以下错误:
Message : Tried to consume messages from VM queue 'productQueue' but it was empty after timeout of 10 SECONDS.
Error type : VM:EMPTY_QUEUE
Element : testing-threadingSub_Flow/processors/0/processors/0 @ testing-threading:testing-threading.xml:95 (Consume)
Element XML : <vm:consume doc:name="Consume" doc:id="6b7b2df6-c986-425c-a6f0-29613a876d37" config-ref="VM_Config" queueName="demoQueue" timeout="10"></vm:consume>
如果没有更多消息要处理,为什么队列的消费者 运行?
我希望此组件仅在轮到他时阅读消息。也许我使用了错误类型的 VM?
VM 消费操作将尝试从队列中读取直到指定的超时时间(这是可配置的),然后如果队列为空则记录该错误。
不知何故,您的 foreach 块执行消耗的次数超过了所需的 amount/messages 可用次数。如果您分享您的 foreach xml 配置,我们可能会看到更多原因。
除了解决为什么 foreach 是 运行 以外,还消耗了过多的资源。有几个选项可以修改此行为:
包装消费以试图抑制错误:
<try doc:name="Try" >
<vm:consume ... />
<error-handler >
<on-error-continue enableNotifications="false" logException="false" type=" ">
<logger />
</on-error-continue>
</error-handler>
</try>
或者可能不使用消费,并使用带有 VM 侦听器的不同流来侦听该 VM 队列上的消息。这可能会改变您的应用的工作方式。
我在 Mule 4 中有一个流程,它从 CSV 文件中读取数据并使用 Batch
:
所有 Salesforce 结果都插入到非持久性 VM 队列(默认为瞬时)。
为每个记录块插入所有消息,并在批处理结束时毫无问题地使用。
但是,当我完成后,10秒后出现以下错误:
Message : Tried to consume messages from VM queue 'productQueue' but it was empty after timeout of 10 SECONDS.
Error type : VM:EMPTY_QUEUE
Element : testing-threadingSub_Flow/processors/0/processors/0 @ testing-threading:testing-threading.xml:95 (Consume)
Element XML : <vm:consume doc:name="Consume" doc:id="6b7b2df6-c986-425c-a6f0-29613a876d37" config-ref="VM_Config" queueName="demoQueue" timeout="10"></vm:consume>
如果没有更多消息要处理,为什么队列的消费者 运行?
我希望此组件仅在轮到他时阅读消息。也许我使用了错误类型的 VM?
VM 消费操作将尝试从队列中读取直到指定的超时时间(这是可配置的),然后如果队列为空则记录该错误。
不知何故,您的 foreach 块执行消耗的次数超过了所需的 amount/messages 可用次数。如果您分享您的 foreach xml 配置,我们可能会看到更多原因。
除了解决为什么 foreach 是 运行 以外,还消耗了过多的资源。有几个选项可以修改此行为:
包装消费以试图抑制错误:
<try doc:name="Try" >
<vm:consume ... />
<error-handler >
<on-error-continue enableNotifications="false" logException="false" type=" ">
<logger />
</on-error-continue>
</error-handler>
</try>
或者可能不使用消费,并使用带有 VM 侦听器的不同流来侦听该 VM 队列上的消息。这可能会改变您的应用的工作方式。