Redisson: почему у реактивного клиента нет PermitExpurableSemaphore?

Я использую реактивный Java-клиент Redisson. В нереактивном клиенте можно получить истекающий семафор как:

RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("mySemaphore");

Но если я создаю реактивный клиент, я могу найти только redisson.getSemaphore("value") функция. Мне нужен PermitExpurable Semaphore, потому что:-

  1. Мне нужен замок, который может быть снят другим потоком (поэтому не могу использовать RLock).
  2. Мне нужен тайм-аут аренды, чтобы предотвратить тупик в случае, если поток, запрашивающий блокировку, был убит или застрял.

Есть ли способ добиться такого поведения в Redisson Distributed Locking?

Edit1: я могу установить глобальный срок аренды в конфигурации как:- Config().setLockWatchdogTimeout(leaseTimeMs), но мне действительно нужно разное время аренды при разных замках.

Edit2: задал вопрос о github Redisson на https://github.com/redisson/redisson/issues/1391

1 ответ

Решение

Как указано в edit2, в Redisson не было никакого способа сделать это. Никита, ведущий разработчик Redisson, быстро представил запрошенную функцию, которая будет запущена в 2.11.6,

Другие вопросы по тегам