@Override
    public Map<String, Map<StreamMessageId, Map<K, V>>> readGroup(String groupName, String consumerName, StreamMultiReadGroupArgs args) {
        return get(readGroupAsync(groupName, consumerName, args));
    }
@Test
    public void testReadGroup() {
        RStream<String, String> stream = redisson.getStream("test");

        StreamMessageId id0 = stream.add(StreamAddArgs.entry("0", "0"));

        stream.createGroup(StreamCreateGroupArgs.name("testGroup").id(id0));

        stream.add(StreamAddArgs.entry("1", "1"));
        stream.add(StreamAddArgs.entry("2", "2"));
        stream.add(StreamAddArgs.entry("3", "3"));
        
        Map<StreamMessageId, Map<String, String>> s = stream.readGroup("testGroup", "consumer1", StreamReadGroupArgs.neverDelivered());
        assertThat(s.values().iterator().next().keySet()).containsAnyOf("1", "2", "3");
        assertThat(s.size()).isEqualTo(3);

        stream.add(StreamAddArgs.entry("1", "1"));
        stream.add(StreamAddArgs.entry("2", "2"));
        stream.add(StreamAddArgs.entry("3", "3"));
        
        Map<StreamMessageId, Map<String, String>> s1 = stream.readGroup("testGroup", "consumer1", StreamReadGroupArgs.neverDelivered().count(1));
        assertThat(s1.size()).isEqualTo(1);
        
        StreamMessageId id = stream.add(StreamAddArgs.entry("1", "1"));
        stream.add(StreamAddArgs.entry("2", "2"));
        stream.add(StreamAddArgs.entry("3", "3"));
        
        Map<StreamMessageId, Map<String, String>> s2 = stream.readGroup("testGroup", "consumer1", StreamReadGroupArgs.greaterThan(id));
        assertThat(s2).isEmpty();
    }