Spring integration Spring集成聚合器-发布策略-发布资源

Spring integration Spring集成聚合器-发布策略-发布资源,spring-integration,Spring Integration,这是一个关于如何释放ReleaseStrategy中使用的资源的一般性问题。 例如,我指的是提交的回复-我想知道如果出现问题,在示例中使用的清理地图的推荐策略是什么: private final Map<Object, AtomicInteger>() map = new HashMap<>(); 假设拆分器生成了一组10条消息,每条消息实际上是线程池执行器要完成的工作。因此,如果作业执行池中的任何作业(比方说第二个作业)花费的时间超过了指定的组超时时间,则此特定消息将

这是一个关于如何释放ReleaseStrategy中使用的资源的一般性问题。 例如,我指的是提交的回复-我想知道如果出现问题,在示例中使用的清理地图的推荐策略是什么:

private final Map<Object, AtomicInteger>() map = new HashMap<>();
假设拆分器生成了一组10条消息,每条消息实际上是线程池执行器要完成的工作。因此,如果作业执行池中的任何作业(比方说第二个作业)花费的时间超过了指定的组超时时间,则此特定消息将发送到discardChannel,但也将调用ReleaseStrategy,对吗

但在这种情况下,我是否仍能在丢弃的消息中更新消息组?我假设不是-所以canRelease方法调用可以大于group.getMessages().size(),对吗

现在发生了什么?在超时时间过去之前收到的这条消息会怎么样?在这种情况下,我仍然可以决定是否要发布MessageGroup中的这条消息? 对于剩余的8条消息(作业),在丢弃组中的第二条消息后,它们是否属于新的groupId(我假设expire groups on timeout默认设置为true),那么这8条消息是否也会获得新的groupId并发送到ReleaseStrategy

另一个问题是当canRelease方法只返回false时会发生什么(具有上述配置)-我注意到,尽管我得到的信息如下:

Expiring MessageGroup with correlationKey[36293c73-6f66-4a1a-8824-9d5268e07081]
Expiring MessageGroup with correlationKey[36293c73-6f66-4a1a-8824-9d5268e07081]

在这种情况下,消息是否“返回”到ServiceActivator(作业执行器池bean)?因此,在这种情况下,它会一次又一次地执行,因此我无法退出工作流?

通常,我会在映射内容中包含某种时间戳,并安排一些任务每隔一段时间对其进行清理

编辑

每当新消息到达并添加到组中时,就会调用发布策略。如果组未释放且超时,则再次调用释放策略,以便决定是否释放组。如果是,这与不使用
sendPartialGroupOnExpiry
true释放组相同。如果返回false(在超时时),则根据
sendPartialGroupOnExpiry
放弃或释放该组

expireGroupsUponTimeout
默认为true,这意味着延迟消息将形成一个新组,并且将为每条消息调用发布策略。如果您希望丢弃迟到的邮件,请将其设置为
false
;组被保留(没有消息),因此我们知道需要丢弃延迟的arriver

在这种情况下,对于延迟的消息将不调用发布策略,它们将立即被丢弃

您可以通过检查组的大小轻松清除超时状态-如果与上次相同,则表示组已过期


对于长时间运行的系统,您可能希望使用消息组存储收割机使空组过期。

您的意思是分离的计划程序?因此,我假设在物理上不可能以某种方式将此操作与在groupTimeout(我们的用例)上触发的scheduler aggregator属性相结合?好的,发布策略在group timeout线程上被再次调用(尽管发布策略不知道这一点)。所以,我想你可以查一下当时的时间)。如果策略返回true,则组将正常释放。我想你可以使用一个定制的任务调度器来检查线程名称——虽然有点不清楚,但它会起作用。如果释放策略被再次调用,我可以依赖canRelease方法调用计数吗?我不确定你所说的“依赖”是什么意思。当新消息到达并且组超时时,将调用释放策略。后者旨在使策略有机会在超时后正常释放组(实际上与到期时发送部分组相同)。因此,您可以比较每次通话时通话组的大小,如果通话组的大小与上次相同,则表示通话超时。我更新了问题,将通话组超时问题包括在内,并继续与Gary进行讨论。
Expiring MessageGroup with correlationKey[36293c73-6f66-4a1a-8824-9d5268e07081]
Expiring MessageGroup with correlationKey[36293c73-6f66-4a1a-8824-9d5268e07081]