mybpm!
Скачать в формате: PDF pdf DOCX word

IN Migration Kafka Additional

Временное хранение смигрированных данных

Каждая мигрированная запись храниться в монго коллекций

mongo.mybpm_aux.KafkaMigrationRecord

Это предотвращает перезапись данных.


Класс, который используется в этой, коллекций:

public class KafkaMigrationRecordDto

Расположения данного класса:

kz/greetgo/mybpm/model_kafka_mongo/migration/KafkaMigrationRecordDto.java

Schedulers of InMigrationKafka

Все шедулеры связанные с миграцией через кафку находиться в классе:

public class InMigrationKafkaScheduler

Удаление временных записей из монго коллекций

    @Scheduled("#")
    @FromConfig("repeat every 5 hour")
    public void deleteRecords() {
    inMigrationKafka.deleteKafkaMigrationRecord();
    }

Повторяются каждые 5 часов, и удаляет просроченные KafkaMigrationRecordDto. Время простроченных записей можно определить в конфиге


Запуск дополнительной миграций для не найденных значение ссылочных БО и СО

    @Scheduled("#")
    @FromConfig("repeat every 10 min")
    public void applyRefBoi() {
    inMigrationKafkaRefBoi.migrateFromTempTable();
    }

Запускается каждые 10 минут если находит значение то, смигрирует эту запись и сделает запись не актуальным во временной таблице. Примечание эти временные данные хранятся в ПОСТГРЕСЕ


Удаляет не актуальные записи в 23:30, под не актуальными записями имеется ввиду уже смигрированные данные которые описан выше

@Scheduled("#")
@FromConfig("23:30")
public void deleteUnActualRecords() {
inMigrationKafkaRefBoi.deleteUnActualRecords();
}

Config of InMigrationKafka

@Description("Конфиг используемые во время миграции в через кафку")
public interface InMigrationKafkaConfig {

@Description("Количество часов до очищения временных записей")
@DefaultIntValue(5)
int recordCleanHours();

@Description("Интервал в минутах для обновление не просаженных ссылочных записей")
@DefaultIntValue(10)
long interval();

@Description("Количество минут до удаления старых записей из Базы")
@DefaultIntValue(10080)
long oldRecordDeleteMinutes();
}