После прослушивания сообщения успешно пытается сохранить данные в Postgres БД, которая не работает. Однако то же сохранение JPA работает, если мы вызываем через HTTP-запрос или метод планировщика.
@Configuration
@EnableScheduling
public class RedisConfig {
@Bean
LettuceConnectionFactory lettuceConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(lettuceConnectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(new GenericToStringSerializer<Object>(Object.class));
template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));
template.setEnableTransactionSupport(true);
return template;
}
@Bean
MessageListenerAdapter messageListener() {
return new MessageListenerAdapter(new RedisMessageListener());
}
@Bean
RedisMessageListenerContainer redisContainer() {
final RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(lettuceConnectionFactory());
container.addMessageListener(messageListener(), topic());
return container;
}
@Bean
MessagePublisher redisPublisher() {
return new RedisPublisherImpl(redisTemplate(), topic());
}
@Bean
ChannelTopic topic() {
return new ChannelTopic("pubsub:queue");
}
}
Вызов сохранения репозитория, вызываемый в этом классе прослушивателя для сохранения в Postgres
public class RedisMessageListener implements MessageListener {
@Autowired
TestRepo testRepo;
@Override
public void onMessage(Message message, byte[] pattern) {
System.out.println("Message received: " + message.toString());
TestEntity test = new TestEntity();
test.setName("RedisMessageListener invoke");
testRepo.save(test);
System.out.println("data saved ");
}
}
Журналы:
Получено сообщение: Сообщение 2, планирование -1 2020-05-08 12: 03: 01.596 ОШИБКА 18164 --- [edisContainer-3] osdrlaMessageListenerAdapter: выполнение прослушивателя не удалось