与secuence孔顺器(resequencer with holes on secuence)

2019-11-03 09:52发布

我们在这里我们使用再顺一个ETL场景。

邮件到达与再顺使用它,以便将消息发送的序列号的流,但有时消息先前丢弃(因为数据验证的),并且不到达再顺。 这将产生孔的顺序和顺器停止使用默认的发布策略发送消息。 为了避免这种情况,我们开发了一种新的SequenceTimeoutReleaseStrategy是从SI默认策略和TimeoutCountSequenceSizeReleaseStrategy之间的混合。 当消息到达时,它会检查超时,如果necesary释放。

这一切运作良好,除非这个超时前到达,并有洞的最后消息。 此消息没有被释放的策略。 我们可以用一个收割者,但secuence可能序列中的一个以上的孔,所以当再顺释放他们就会在第一序列休息停止并删除该组失去消息的其余部分。 所以,问题是:是否有使用再顺那里可以序列中孔的方法吗?

一个解决方案,我们有,并希望避免是有一个计划任务,然后直接从消息库中删除的消息,但是这可能与并发性等方面的问题,所以我们更喜欢其他的解决方案。

任何帮助这里赞赏

问候古斯曼

Answer 1:

这里涉及两个组成部分; 释放战略说“东西”可以被释放; 至于什么被释放的实际决定由执行MessageGroupProcessor 。 在这种情况下, ResequencingMessageGroupProcessor

您将需要自定义类“跳过”孔(或多个)。

您可以使用一个定制的MGP没有电线<reseequencer/>命名空间,你就必须要连接使用<bean/>秒-一个ResequencingMessageHandlerConsumerEndpointFactoryBean

或者使用BeanFactoryPostProcessor的构造函数的参数更改为您的自定义类。



文章来源: resequencer with holes on secuence