'Redis streamReceiver No converter found capable of converting from type [byte[]] to type [java.util.LinkedHashMap<?, ?>]

Am trying read nested Json from redis using Stream receiver simple key value pairs workking fine, When i try using nested object getting below error having simple POJO with Map<String, Object> Input:

Working:
{
    "data":{
        "start": "1",
        "End": "5",
        "name": "name"
    }
}
Not Working:
{
    "data":{
        "start": "1",
        "End": "5",
        "name": "name",
        "A":{
            "B": "Class"
        }
    }
}
@Getter
@Setter
@Data
public class Message {
  Map<String, Object> data;
  public Message(){}
}

Trying read value from Redis to my message POJO

public StreamConnection(
      StreamReceiver<String, ObjectRecord<String, Message>> streamReceiver,
      String channelId,
      SimpMessagingTemplate messagingTemplate
      ) {

    Flux<ObjectRecord<String, Message>> receiver = streamReceiver
        .receive(StreamOffset.fromStart(channelId));
    disposable = receiver.subscribe(msg -> {
      logger.info("Processing message {}", msg);

     Message value = msg.getValue();
      try {
        messagingTemplate.convertAndSend(channelId, mapper.writeValueAsString(value));
      } catch (JsonProcessingException e) {
        throw new RuntimeException(e);
      }
    });

  }

Getting below error

reactor.core.Exceptions$ErrorCallbackNotImplemented: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [org.springframework.data.redis.connection.stream.StreamRecords$ByteBufferMapBackedRecord] to type [ai.jiffy.message.dto.Message] for value 'MapBackedRecord{recordId=1649992386036-0, kvMap={java.nio.HeapByteBuffer[pos=6 lim=6 cap=6]=java.nio.HeapByteBuffer[pos=28 lim=28 cap=28], java.nio.HeapByteBuffer[pos=15 lim=15 cap=15]=java.nio.HeapByteBuffer[pos=23 lim=23 cap=23], java.nio.HeapByteBuffer[pos=20 lim=20 cap=20]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=18 lim=18 cap=18]=java.nio.HeapByteBuffer[pos=2 lim=2 cap=2], java.nio.HeapByteBuffer[pos=17 lim=17 cap=17]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=24 lim=24 cap=24]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=19 lim=19 cap=19]=java.nio.HeapByteBuffer[pos=5 lim=5 cap=5], java.nio.HeapByteBuffer[pos=26 lim=26 cap=26]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=19 lim=19 cap=19]=java.nio.HeapByteBuffer[pos=4 lim=4 cap=4], java.nio.HeapByteBuffer[pos=17 lim=17 cap=17]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=13 lim=13 cap=13]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=25 lim=25 cap=25]=java.nio.HeapByteBuffer[pos=29 lim=29 cap=29], java.nio.HeapByteBuffer[pos=23 lim=23 cap=23]=java.nio.HeapByteBuffer[pos=2 lim=2 cap=2], java.nio.HeapByteBuffer[pos=22 lim=22 cap=22]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=29 lim=29 cap=29]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=24 lim=24 cap=24]=java.nio.HeapByteBuffer[pos=5 lim=5 cap=5], java.nio.HeapByteBuffer[pos=31 lim=31 cap=31]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=18 lim=18 cap=18]=java.nio.HeapByteBuffer[pos=2 lim=2 cap=2], java.nio.HeapByteBuffer[pos=17 lim=17 cap=17]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=24 lim=24 cap=24]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=19 lim=19 cap=19]=java.nio.HeapByteBuffer[pos=5 lim=5 cap=5], java.nio.HeapByteBuffer[pos=26 lim=26 cap=26]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=18 lim=18 cap=18]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=10 lim=10 cap=10]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=17 lim=17 cap=17]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=11 lim=11 cap=11]=java.nio.HeapByteBuffer[pos=4 lim=4 cap=4], java.nio.HeapByteBuffer[pos=18 lim=18 cap=18]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=12 lim=12 cap=12]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=19 lim=19 cap=19]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16]}}'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [byte[]] to type [java.util.LinkedHashMap<?, ?>]
Caused by: org.springframework.core.convert.ConversionFailedException: Failed to convert from type [org.springframework.data.redis.connection.stream.StreamRecords$ByteBufferMapBackedRecord] to type [ai.jiffy.message.dto.Message] for value 'MapBackedRecord{recordId=1649992386036-0, kvMap={java.nio.HeapByteBuffer[pos=6 lim=6 cap=6]=java.nio.HeapByteBuffer[pos=28 lim=28 cap=28], java.nio.HeapByteBuffer[pos=15 lim=15 cap=15]=java.nio.HeapByteBuffer[pos=23 lim=23 cap=23], java.nio.HeapByteBuffer[pos=20 lim=20 cap=20]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=18 lim=18 cap=18]=java.nio.HeapByteBuffer[pos=2 lim=2 cap=2], java.nio.HeapByteBuffer[pos=17 lim=17 cap=17]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=24 lim=24 cap=24]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=19 lim=19 cap=19]=java.nio.HeapByteBuffer[pos=5 lim=5 cap=5], java.nio.HeapByteBuffer[pos=26 lim=26 cap=26]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=19 lim=19 cap=19]=java.nio.HeapByteBuffer[pos=4 lim=4 cap=4], java.nio.HeapByteBuffer[pos=17 lim=17 cap=17]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=13 lim=13 cap=13]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=25 lim=25 cap=25]=java.nio.HeapByteBuffer[pos=29 lim=29 cap=29], java.nio.HeapByteBuffer[pos=23 lim=23 cap=23]=java.nio.HeapByteBuffer[pos=2 lim=2 cap=2], java.nio.HeapByteBuffer[pos=22 lim=22 cap=22]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=29 lim=29 cap=29]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=24 lim=24 cap=24]=java.nio.HeapByteBuffer[pos=5 lim=5 cap=5], java.nio.HeapByteBuffer[pos=31 lim=31 cap=31]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=18 lim=18 cap=18]=java.nio.HeapByteBuffer[pos=2 lim=2 cap=2], java.nio.HeapByteBuffer[pos=17 lim=17 cap=17]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=24 lim=24 cap=24]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=19 lim=19 cap=19]=java.nio.HeapByteBuffer[pos=5 lim=5 cap=5], java.nio.HeapByteBuffer[pos=26 lim=26 cap=26]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=18 lim=18 cap=18]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=10 lim=10 cap=10]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=17 lim=17 cap=17]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=11 lim=11 cap=11]=java.nio.HeapByteBuffer[pos=4 lim=4 cap=4], java.nio.HeapByteBuffer[pos=18 lim=18 cap=18]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16], java.nio.HeapByteBuffer[pos=12 lim=12 cap=12]=java.nio.HeapByteBuffer[pos=1 lim=1 cap=1], java.nio.HeapByteBuffer[pos=19 lim=19 cap=19]=java.nio.HeapByteBuffer[pos=16 lim=16 cap=16]}}'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [byte[]] to type [java.util.LinkedHashMap<?, ?>]
    at org.springframework.data.redis.stream.DefaultStreamReceiver$StreamSubscription.lambda$scheduleIfRequired$2(DefaultStreamReceiver.java:342) ~[spring-data-redis-2.6.3.jar:2.6.3]
Caused by: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [byte[]] to type [java.util.LinkedHashMap<?, ?>]

Redis config

@Bean
  StreamReceiver<String, ObjectRecord<String, Message>> streamReceiver(
      ReactiveRedisConnectionFactory factory){
    return StreamReceiver.create(factory,
        StreamReceiverOptions.builder()
        .targetType(Message.class).build());
  }


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source