@Override
    public void put(V e) throws InterruptedException {
        RedissonQueueSemaphore semaphore = createSemaphore(e);
        semaphore.acquire();
    }
@Test
    public void testPut() throws InterruptedException {
        final RBoundedBlockingQueue<Integer> queue1 = redisson.getBoundedBlockingQueue("bounded-queue");
        queue1.trySetCapacity(3);
        queue1.add(1);
        queue1.add(2);
        queue1.add(3);
        
        ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
        
        final AtomicBoolean executed = new AtomicBoolean();
        
        executor.schedule(new Runnable() {

            @Override
            public void run() {
                RBoundedBlockingQueue<Integer> queue1 = redisson.getBoundedBlockingQueue("bounded-queue");
                assertThat(queue1.poll()).isEqualTo(1);
                executed.set(true);
            }
            
        }, 1, TimeUnit.SECONDS);

        queue1.put(4);
        
        await().atMost(5, TimeUnit.SECONDS).untilTrue(executed);
        
        assertThat(queue1).containsExactly(2, 3, 4);
        
        executor.shutdown();
        assertThat(executor.awaitTermination(1, TimeUnit.MINUTES)).isTrue();
    }