Допустим, у меня есть класс, представляющий событие (слюни в потоковом режиме), и я установил истечение срока действия для этого события следующим образом:
@Role(Role.Type.EVENT)
@Expires("1m")
public class EventWithShortExpiration {}
Это прекрасно работает. Через 1 минуту после вставки этого события оно автоматически извлекается из рабочей памяти. Теперь предположим, что у меня есть другой класс (унаследованный от вышеуказанного класса):
@Role(Role.Type.EVENT)
@Expires("10m")
public class EventWithLongExpiration extends EventWithShortExpiration {}
Так что я ожидаю, что события EventWithLongExpiration будут отозваны через 10 мес. В качестве альтернативы я мог бы также использовать решение, в котором у подкласса вообще нет срока действия, или у суперкласса вообще нет срока действия, все комбинации проверены и не работают.
На самом деле происходит следующее: Определение super @expires всегда имеет приоритет над определением подкласса @expires. Если у суперкласса вообще нет срока действия, и только у подкласса он есть, срок действия вообще не существует ни для одного из классов, и объекты никогда не убираются.
Есть ли способ заставить эту работу и иметь 2 различные политики истечения срока действия для подклассов?
Чтобы было ясно, я хочу запрашивать только супертипы в моих запросах DRL и получать экземпляры как суперкласса, так и подкласса в одном выражении, но я хочу, чтобы они получить обратно после различных периодов.