mule端点不可用时的重试机制

mule端点不可用时的重试机制,mule,Mule,我有一个用例,在这个用例中,我从一个主题中读取消息并将其传递到ftp端点。 如果ftp端点不可用,我需要将消息存储在存储中 这样它就不会丢失。不应处理将来从主题读取的消息。 在端点可用之前,一旦端点可用,我们将处理第一个端点 message received,后跟按接收顺序排列的所有消息。我不是 确定如何实现这一点 有两种选择: 使用“直到成功”范围: 使用保留顺序的objectStore。我认为任何默认实现都不能保证这一点,因此您必须创建自己的实现 将消息存储在JMS队列中,并具有以事务方式使

我有一个用例,在这个用例中,我从一个主题中读取消息并将其传递到ftp端点。 如果ftp端点不可用,我需要将消息存储在存储中 这样它就不会丢失。不应处理将来从主题读取的消息。 在端点可用之前,一旦端点可用,我们将处理第一个端点 message received,后跟按接收顺序排列的所有消息。我不是 确定如何实现这一点

有两种选择:

使用“直到成功”范围:

使用保留顺序的objectStore。我认为任何默认实现都不能保证这一点,因此您必须创建自己的实现

将消息存储在JMS队列中,并具有以事务方式使用消息并尝试FTP分派的流。在失败的情况下,事务将失败,消息将被推回队列以尝试重新交付。确保使用支持消息排序的JMS代理,如。
谢谢David,因此当我们从对象存储读取时,顺序是否会保持?请相应地查看我的答案。David是否可以使用数据库存储?我是否可以使用数据库存储,直到成功使用db存储。因此,在端点可用之前,我使用db存储。端点可用时,我将以FIFO方式处理来自数据库的消息基本上,您可以进行扩展,使其实现所需的ListableObjectStore,直到成功。诀窍是在allKeys实现中使用ORDER子句来满足您的FIFO要求。对不起,更改了原始问题。您是对的,您建议的第二个选项没有任何意义。自从我开始讨论第一个选项以来,我已经编辑了我的帖子
<until-successful objectStore-ref="objectStore"
              maxRetries="5" secondsBetweenRetries="60">
    <ftp:outbound-endpoint ... />
</until-successful>