'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 |
|---|
