Интеграция Spring: агрегатор истечет срок действия сообщения по тайм-ауту

Я использую шаблон агрегатора SI для хранения событий и ожидания событий завершения и сохранения их в хранилище JdbcMessage. Я создал таблицу INT_MESSAGE, INT_MESSAGE_GROUP и INT_GROUP_TO_MESSAGE.

Иногда событие завершения может быть недоступно, и я хочу завершить и отменить событие, удалить его из таблиц. Я не хочу, чтобы таблицы росли без необходимости

Я указал приведенную ниже конфигурацию в конвейере

                        .expireGroupsUponCompletion(true)
                        .expireGroupsUponTimeout(true)
                        .groupTimeout(groupMessageTimeOut)
                        .sendPartialResultOnExpiry(false)

Будет ли это гарантировать, что если событие завершения не прибудет через x минут, срок действия группы сообщений истечет, она будет отброшена в нулевом канале и удалена из таблиц.

Пожалуйста, предложите.


person sam    schedule 06.02.2020    source источник


Ответы (1)


Ваше резюме верно. И .expireGroupsUponCompletion(true), и .expireGroupsUponTimeout(true) удаляют группу из магазина. sendPartialResultOnExpiry(false) действительно делает то, что вы просите:

if (this.sendPartialResultOnExpiry) {
        if (this.logger.isDebugEnabled()) {
            this.logger.debug("Prematurely releasing partially complete group with key ["
                    + correlationKey + "] to: " + getOutputChannel());
        }
        completeGroup(correlationKey, group, lock);
    }
    else {
        if (this.logger.isDebugEnabled()) {
            this.logger.debug("Discarding messages of partially complete group with key ["
                    + correlationKey + "] to: "
                    + (this.discardChannelName != null ? this.discardChannelName : this.discardChannel));
        }
        if (this.releaseLockBeforeSend) {
            lock.unlock();
        }
        group.getMessages()
                .forEach(this::discardMessage);
    }

Расскажите, пожалуйста, что вас смутило в этой конфигурации?

person Artem Bilan    schedule 06.02.2020