@Override
    public void transfer(V v) throws InterruptedException {
        RFuture<Void> future = service.invoke(v);
        commandExecutor.getInterrupted(future);
    }
@Test
    public void testTransfer() throws InterruptedException, ExecutionException {
        RTransferQueue<Integer> queue1 = redisson.getTransferQueue("queue");
        AtomicBoolean takeExecuted = new AtomicBoolean();
        Future<?> f = Executors.newSingleThreadExecutor().submit(() -> {
            RTransferQueue<Integer> queue = redisson.getTransferQueue("queue");
            try {
                long time = System.currentTimeMillis();
                queue.transfer(3);
                assertThat(takeExecuted.get()).isTrue();
                assertThat(System.currentTimeMillis() - time).isGreaterThan(2850);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        });

        Thread.sleep(3000);

        assertThat(queue1.size()).isEqualTo(1);
        assertThat(queue1.peek()).isEqualTo(3);
        assertThat(queue1.take()).isEqualTo(3);
        takeExecuted.set(true);
        f.get();
        assertThat(queue1.size()).isZero();
        assertThat(queue1.peek()).isNull();
    }