1.pom 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
2.配置
redis:
host: 10.5.6.13
port: 6379
password: sensetime
timeout: 10000
maxIdle: 300
maxTotal: 1000
maxWaitMillis: 1000
minEvictableIdleTimeMillis: 300000
numTestsPerEvictionRun: 1024
timeBetweenEvictionRunsMillis: 30000
testOnBorrow: true
testWhileIdle: true
3.redisConfig
/**
* 创建任务池,运行线程等待处理redis的消息
*/
@Bean
public ThreadPoolTaskScheduler initTaskScheduler() {
if (null != taskScheduler) {
return taskScheduler;
}
taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(20);
return taskScheduler;
}// 定义监听渠道,名称为topic1
@Bean
public ChannelTopic topic() {
return new ChannelTopic(topic);
}
/**
* 定义redis的监听器
*
* @return 监听容器
*/
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
// Redis连接工厂
container.setConnectionFactory(redisConnectionFactory);
// 设置运行任务的线程池
container.setTaskExecutor(initTaskScheduler());
// 使用监听器监听Redis的消息
container.addMessageListener(new ConsumerRedisListener(), topic());
return container;}
4.消费监听器
public class ConsumerRedisListener implements MessageListener {
@Override
public void onMessage(Message message, byte[] pattern) {
// 消息体
String body = new String(message.getBody());
// 渠道名称
String topic = new String(pattern);
System.out.println("消息体:" + body);
System.out.println("渠道名称:" + topic);
}}
5.发布-测试
stringRedisTemplate.convertAndSend("faceSearchTopic","hello redis");
6.结果
7.到这步说明已经发布订阅成功。