Redisson: почему у реактивного клиента нет PermitExpurableSemaphore?
Я использую реактивный Java-клиент Redisson. В нереактивном клиенте можно получить истекающий семафор как:
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("mySemaphore");
Но если я создаю реактивный клиент, я могу найти только redisson.getSemaphore("value")
функция. Мне нужен PermitExpurable Semaphore, потому что:-
- Мне нужен замок, который может быть снят другим потоком (поэтому не могу использовать
RLock
). - Мне нужен тайм-аут аренды, чтобы предотвратить тупик в случае, если поток, запрашивающий блокировку, был убит или застрял.
Есть ли способ добиться такого поведения в Redisson Distributed Locking?
Edit1: я могу установить глобальный срок аренды в конфигурации как:- Config().setLockWatchdogTimeout(leaseTimeMs)
, но мне действительно нужно разное время аренды при разных замках.
Edit2: задал вопрос о github Redisson на https://github.com/redisson/redisson/issues/1391
1 ответ
Как указано в edit2, в Redisson не было никакого способа сделать это. Никита, ведущий разработчик Redisson, быстро представил запрошенную функцию, которая будет запущена в 2.11.6
,