Spring integration Spring集成—消息存储是否可以持久化到队列?

Spring integration Spring集成—消息存储是否可以持久化到队列?,spring-integration,Spring Integration,问题:如果发生系统故障,如何将消息存储中的消息回滚到队列 场景: IBM MQ队列-->JMS消息驱动器通道适配器-->聚合器 在导致JVM关闭的系统故障期间。我是否可以指定一个MQ队列作为持久消息存储,而不是使用默认的易失性消息存储?这样,如果发生系统故障,消息存储中的消息可以回滚到MQ持久队列以进行故障转移处理 编辑:澄清的最后一句话 不清楚你所说的 可以回滚到原始队列 …如果你是说自动,那么,不 有一个JDBC消息存储实现(但需要XA事务) 您可能会创建一个由JMS支持的自定义消息存储,但

问题:如果发生系统故障,如何将消息存储中的消息回滚到队列

场景: IBM MQ队列-->JMS消息驱动器通道适配器-->聚合器

在导致JVM关闭的系统故障期间。我是否可以指定一个MQ队列作为持久消息存储,而不是使用默认的易失性消息存储?这样,如果发生系统故障,消息存储中的消息可以回滚到MQ持久队列以进行故障转移处理


编辑:澄清的最后一句话

不清楚你所说的

可以回滚到原始队列

…如果你是说自动,那么,不

有一个JDBC消息存储实现(但需要XA事务)


您可能会创建一个由JMS支持的自定义消息存储,但这是一个不寻常的队列用法-我想您必须使用基于
groupId
的消息选择器,但您可能必须在内存中保留一个镜像(并在系统初始化期间对其进行初始化,同时将消息保留在队列中).

不清楚你所说的

可以回滚到原始队列

…如果你是说自动,那么,不

有一个JDBC消息存储实现(但需要XA事务)


您可能会创建一个由JMS支持的自定义消息存储,但这是一个不寻常的队列用法-我想您必须使用基于
groupId
的消息选择器,但您可能必须在内存中保留一个镜像(并在系统初始化期间对其进行初始化,同时将消息保留在队列中)。

,它不必进入原始队列。只要系统出现故障,我就可以将消息持久化到队列中,这样就可以了。目标是为留在消息存储中的消息实现故障转移场景。有没有可能把它们重新排成一个队列?再说一遍,不清楚你的意思是什么。如果您编写了一个队列支持的消息存储,则消息已经在队列中,因此没有要回滚的内容。但是,正如我也说过的,使用队列作为存储是有点不寻常的。好吧,这就是我想要做的。要拥有队列支持的消息存储。因此,我将不得不做一个自定义的消息存储。你能给我指出一些显示自定义消息存储的例子吗?你说这有点不寻常,我可以问一下为什么吗?队列提供了持久性,如果发生故障,另一个进程可以从它停止的地方开始,而不需要在数据库中创建任何表。问题是聚合器需要访问整个组(因此发布策略可以确定是否是发布的时候)。因此,您需要保留组的并行内存副本。真正的问题是如何在重启后恢复内存拷贝;您必须以某种方式浏览队列和/或读取消息并将其发送回队列。棘手的事情。好吧,这就是我想要的技术回应。所以对于持久性,这就是为什么消息存储最好使用jdbc持久性存储的原因。只要系统出现故障,我就可以将消息持久化到队列中,这样就可以了。目标是为留在消息存储中的消息实现故障转移场景。有没有可能把它们重新排成一个队列?再说一遍,不清楚你的意思是什么。如果您编写了一个队列支持的消息存储,则消息已经在队列中,因此没有要回滚的内容。但是,正如我也说过的,使用队列作为存储是有点不寻常的。好吧,这就是我想要做的。要拥有队列支持的消息存储。因此,我将不得不做一个自定义的消息存储。你能给我指出一些显示自定义消息存储的例子吗?你说这有点不寻常,我可以问一下为什么吗?队列提供了持久性,如果发生故障,另一个进程可以从它停止的地方开始,而不需要在数据库中创建任何表。问题是聚合器需要访问整个组(因此发布策略可以确定是否是发布的时候)。因此,您需要保留组的并行内存副本。真正的问题是如何在重启后恢复内存拷贝;您必须以某种方式浏览队列和/或读取消息并将其发送回队列。棘手的事情。好吧,这就是我想要的技术回应。因此,对于持久性,这就是为什么消息存储最好使用jdbc持久性存储。