spring-projects / spring-projects/spring-data-redis
Custom HashValueSerializer for RedisTemplate in redis stream happend ConversionFailedException!
Open
@mp911de is already working on this.
Since Oct 18, 2022.
for: team-attention
status: feedback-provided
- Dominant language
- Java
- Stars
- 1.9k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
in my configclass,code show as below
@Bean
public GenericJackson2JsonRedisSerializer jsonRedisSerializer(
Jackson2ObjectMapperBuilder objectMapperBuilder) {
var objectMapper = objectMapperBuilder.build();
GenericJackson2JsonRedisSerializer.registerNullValueSerializer(objectMapper, null);
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(),
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
return new GenericJackson2JsonRedisSerializer(objectMapper);
}
@Bean
public RedisTemplate<String, Object> redisTemplate(
RedisConnectionFactory redisConnectionFactory,
GenericJackson2JsonRedisSerializer jsonRedisSerializer) {
var template = new RedisTemplate<String, Object>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(RedisSerializer.string());
template.setValueSerializer(jsonRedisSerializer);
template.setHashKeySerializer(RedisSerializer.string());
template.setHashValueSerializer(jsonRedisSerializer);
return template;
}
public class ConsumerListener implements StreamListener<String, ObjectRecord<String, ModelMessageBO>> {
private String group;
private String topic;
private RedisTemplate<String, Object> redisTemplate;
private AbstractModelMessageHandler modelMessageHandler;
public ModelJobConsumerListener(String topic, String group, RedisTemplate<String, Object> redisTemplate, AbstractModelMessageHandler modelMessageHandler) {
this.topic = topic;
this.group = group;
this.redisTemplate = redisTemplate;
this.modelMessageHandler = modelMessageHandler;
}
@Override
public void onMessage(ObjectRecord message) {
Object value=message.getValue();
}
}
If i use template.setHashValueSerializer(jsonRedisSerializer),an ConversionFailedException occurs.
But i use template.setHashValueSerializer(RedisSerializer.string()) ,it working normally.
Is it a bug🐛?
Thank you.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.