Mule 如何为JDBC连接器实现死信队列,直到成功
我正在尝试在上实现死信队列,直到JDBC连接器成功。我希望在尝试配置的次数之后,当UntillSuccessful失败时,将有效负载发送到队列(DeadLetterQueue)。我参考了以下链接 下面是我的代码片段Mule 如何为JDBC连接器实现死信队列,直到成功,mule,mule-studio,Mule,Mule Studio,我正在尝试在上实现死信队列,直到JDBC连接器成功。我希望在尝试配置的次数之后,当UntillSuccessful失败时,将有效负载发送到队列(DeadLetterQueue)。我参考了以下链接 下面是我的代码片段 <vm:endpoint exchange-pattern="one-way" path="dlqChannel" name="VM" doc:name="VM"/> 上面这一行是我的全局元素 <flow...> .... <until-su
<vm:endpoint exchange-pattern="one-way" path="dlqChannel" name="VM" doc:name="VM"/>
上面这一行是我的全局元素
<flow...> .... <until-successful objectStore-ref="objectStore" deadLetterQueue-ref="dlqChannel" maxRetries="5" secondsBetweenRetries="60" doc:name="Until Successful" failureExpression="exception-type:java.sql.SQLException">
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="Insert Query" queryTimeout="-1" connector-ref="Database" doc:name="Database"/>
</until-successful>....</flow>
<flow name="Flow2" doc:name="Flow2">
<endpoint ref="dlqChannel" />
<logger message="DEAD DEAD DEAD LETTER LETTER LETTER #[message]" level="INFO" doc:name="Logger"/>
</flow>
<flow...> ... <until-successful objectStore-ref="objectStore" deadLetterQueue-ref="dlqChannel" maxRetries="2" secondsBetweenRetries="10" doc:name="Until Successful" failureExpression="exception-type:java.sql.SQLException">
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="Insert Query" queryTimeout="-1" connector-ref="Database" doc:name="Database"/>
</until-successful>
....
</flow>
<flow name="Flow2" doc:name="Flow2">
<vm:inbound-endpoint exchange-pattern="one-way" path="dlq" doc:name="VM"/>
<logger message="DEAD DEAD DEAD LETTER LETTER LETTER #[message.payload]" level="INFO" doc:name="Logger"/>
</flow>
。。。。
....
在这一行
我得到一个编译错误,上面写着“对未知全局元素的引用:dlqChannel”
有谁能提出实现这一情景的最佳方法吗
谢谢,
Kalyan您的端点被称为“VM”而不是“dlqChannel”。将名称更改为dlqChannel或将其指向VM。正如Seba正确指出的,您的错误是由于名称/引用错误。至于如何实现deadLetterQueue,您需要一个入站端点。因此,在流程2中,将端点更改为
此问题已得到解决
下面是我的代码片段
<vm:endpoint exchange-pattern="one-way" path="dlq" name="dlqChannel" doc:name="VM"/>
上面一行是vm全局元素
<flow...> .... <until-successful objectStore-ref="objectStore" deadLetterQueue-ref="dlqChannel" maxRetries="5" secondsBetweenRetries="60" doc:name="Until Successful" failureExpression="exception-type:java.sql.SQLException">
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="Insert Query" queryTimeout="-1" connector-ref="Database" doc:name="Database"/>
</until-successful>....</flow>
<flow name="Flow2" doc:name="Flow2">
<endpoint ref="dlqChannel" />
<logger message="DEAD DEAD DEAD LETTER LETTER LETTER #[message]" level="INFO" doc:name="Logger"/>
</flow>
<flow...> ... <until-successful objectStore-ref="objectStore" deadLetterQueue-ref="dlqChannel" maxRetries="2" secondsBetweenRetries="10" doc:name="Until Successful" failureExpression="exception-type:java.sql.SQLException">
<jdbc-ee:outbound-endpoint exchange-pattern="request-response" queryKey="Insert Query" queryTimeout="-1" connector-ref="Database" doc:name="Database"/>
</until-successful>
....
</flow>
<flow name="Flow2" doc:name="Flow2">
<vm:inbound-endpoint exchange-pattern="one-way" path="dlq" doc:name="VM"/>
<logger message="DEAD DEAD DEAD LETTER LETTER LETTER #[message.payload]" level="INFO" doc:name="Logger"/>
</flow>
。。。
....
根据UntlSuccessful中的“deadLetterQueue ref”,有效负载将转到vm全局端点中定义的vm:inbound端点(vm://dlq)。明确地将vm:endpoint重命名为dlqChannel。名为VM的VM端点不会告诉任何人任何事情。