предположим, что у меня есть эта конфигурация для дескриптора, и действия были предприняты отсюда:
ValueStateDescriptor<Event> descriptor = ...;
StateTtlConfig ttlConfigOneHourAndReturnExpire = StateTtlConfig.newBuilder(Time.hours(1))
.setUpdateType(StateTtlConfig.UpdateType.OnReadAndWrite)
.setStateVisibility(StateTtlConfig.StateVisibility.ReturnExpiredIfNotCleanedUp).build();
descriptor.enableTimeToLive(ttlConfigOneHourAndReturnExpire);
/*after one hour when the state is expired*/
Event e = state.value(); (step 1 and 2)
e.count = e.count + 1; (step 3)
value.update(e); (step 4)
Означает ли это, что через 1 час, когда состояние уже устарело, все будет происходить в следующем порядке:
- Возвращать предыдущее состояние записи в состояние, кроме того, является устаревшим.
- После этого чтения предыдущее состояние записи будет очищено.
- Обновите объект после того, как предыдущее состояние было доставлено и очищено (при чтении).
- Обновление состояния в этом случае будет означать создание состояния снова, потому что предыдущее уже было удалено, и это значение займет еще один час, или состояние будет очищено в этой точке, а не в точке 1, и объект не будет включать обновление и он будет храниться в том состоянии, в котором он прибыл?
Прыгая, я мог объясниться, потому что документация мне непонятна.
Начиная с того момента, когда мне нужно очистить состояния, когда происходит изменение дня, и нет способа сделать это с помощью TTL, я хочу очищать состояние после каждого часа, но получать состояние до удаления, обновлять текущее значение, а затем снова создать состояние еще на один час, но всегда сохраняя предыдущее состояние до его потери.
Надеюсь, это имеет смысл и что-то можно сделать. С уважением!