繁体   English   中英

内存中带有Aggregator的Spring Integration超时

[英]Spring Integration timeout with Aggregator in memory

我注意到(代码反编译),当在聚集器上设置超时时,整个消息组将存储在将来的内存中而不是存储中。 当高吞吐量发生时,这有时会导致“内存不足”异常。

有没有更好的方法来解决这个问题?

<aggregator input-channel="orderNotificationLoadBalancedExecutorChannelLATAM" output-channel="orderNotificationConverterChannelLATAM"
            message-store="orderNotificationGroupStoreLATAM"
            send-partial-result-on-expiry="true"
            ref="firstOnlyPrimaryKeyMessageAggregator"
            method="aggregate"
            correlation-strategy-expression="headers['erpKeyMap']['erpKey']"
            release-strategy-expression="#this[0].headers['tableName'].topLevel and #this[0].headers['operationType'].operationTypeDelete"
            expire-groups-upon-completion="true"
            expire-groups-upon-timeout="true"
            group-timeout="5000">
</aggregator>

哎呀!

看起来像个错误。 我刚刚就此事提出了JIRA

有罪代码如下:

private void scheduleGroupToForceComplete(final MessageGroup messageGroup) {
...
    ScheduledFuture<?> scheduledFuture = this.getTaskScheduler()
        .schedule(new Runnable() {

            @Override
            public void run() {
                try {
                    forceReleaseProcessor.processMessageGroup(messageGroup);
                    }
                    catch (MessageDeliveryException e) {
                        if (logger.isDebugEnabled()) {
                            logger.debug("The MessageGroup [ " + messageGroup +
                                "] is rescheduled by the reason: " + e.getMessage());
                        }
                        scheduleGroupToForceComplete(messageGroup);
                    }
                }
            }, new Date(System.currentTimeMillis() + groupTimeout));

因此, ScheduledFuture通过该内联Runnable回调保存对final MessageGroup的引用。

我认为我们将仅使用groupId对其进行修复。

抱歉,没有任何解决方法...

您可以设置消息存储。 看到这里

  1. 对MessageGroupStore的引用,用于将消息组存储在它们的关联键下,直到它们完成为止。 可选,默认情况下是易失的内存存储。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM