【发布时间】:2021-07-18 21:08:54
【问题描述】:
我在我的 Spring Boot 应用程序中使用 Redis Server 作为消息代理。 有没有什么简单的方法来 Junit 我的发布和接收 API?
例如:
出版商:
public String publish(Object domainObj) {
template.convertAndSend(topic.getTopic(), domainObj.toString());
return "Event Published";
}
接收者:
公共类 Receiver 实现 MessageListener {
@Override
public void onMessage(Message message, byte[] bytes) {
System.out.println("Consumed Message {}" + message);
}
}
我正在使用 JedisConnectionFactory 和 RedisMessageListenerContainer 和 RedisTemplate 来实现
@Configuration
@EnableRedisRepositories
public class RedisConfig {
@Bean
public JedisConnectionFactory connectionFactory() {
RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration();
configuration.setHostName("localhost");
configuration.setPort(6379);
return new JedisConnectionFactory(configuration);
}
@Bean
public RedisTemplate<String, Object> template() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory());
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new JdkSerializationRedisSerializer());
template.setValueSerializer(new JdkSerializationRedisSerializer());
template.setEnableTransactionSupport(true);
template.afterPropertiesSet();
return template;
}
@Bean
public ChannelTopic topic() {
return new ChannelTopic("common-channel");
}
@Bean
public MessageListenerAdapter messageListenerAdapter() {
return new MessageListenerAdapter(new Receiver());
}
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer() {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.addMessageListener(messageListenerAdapter(), topic());
return container;
}
【问题讨论】:
-
不,没有简单的方法可以尝试 local-redis 模块..
标签: junit redis mockito spring-jms spring-boot-test