Spring Integration: Aggregator для истечения срока действия сообщения - PullRequest
0 голосов
/ 06 февраля 2020

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

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

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

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

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

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

1 Ответ

1 голос
/ 06 февраля 2020

Ваше резюме верно. Оба .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);
    }

Скажите, пожалуйста, что заставило вас запутаться в этой конфигурации?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...