Integrasi Musim Semi: Agregator akan mengakhiri pesan tepat waktu

Saya menggunakan pola agregator SI untuk mengadakan acara dan menunggu acara selesai dan menyimpannya di penyimpanan JdbcMessage. Saya telah membuat tabel INT_MESSAGE, INT_MESSAGE_GROUP dan INT_GROUP_TO_MESSAGE.

Terkadang, acara penyelesaian mungkin tidak tersedia dan saya ingin menyelesaikan dan membuang acara tersebut, menghapusnya dari tabel. Saya tidak ingin tabel menjadi besar tanpa perlu

Saya telah menentukan konfigurasi di bawah ini di dalam pipa

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

Apakah ini memastikan jika acara penyelesaian tidak tiba dalam x menit maka grup pesan akan kedaluwarsa, dibuang di saluran nol dan dihapus dari tabel.

Mohon sarannya.


person sam    schedule 06.02.2020    source sumber


Jawaban (1)


Ringkasan Anda benar. Baik .expireGroupsUponCompletion(true) & .expireGroupsUponTimeout(true) menghapus grup dari toko. sendPartialResultOnExpiry(false) benar-benar melakukan apa yang Anda minta:

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);
    }

Tolong beritahu kami, apa yang membuat Anda bingung dengan konfigurasi itu?

person Artem Bilan    schedule 06.02.2020