当前位置: 首页> 娱乐> 明星 > SpringBoot+Redis 发布与订阅

SpringBoot+Redis 发布与订阅

时间:2025/7/14 22:37:18来源:https://blog.csdn.net/tiantiantbtb/article/details/140939710 浏览次数:0次

 两个应用都引入

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

发布者

/*** @author hrui* @date 2024/8/5 23:32*/
@RestController
public class PublisherController {@Autowiredprivate RedisMessagePublisher redisMessagePublisher;// 发布消息接口@GetMapping("/publish")public String publishMessage() {String message = "发布一条消息";redisMessagePublisher.publish(message);return "消息已发布!";}
}
/*** @author hrui* @date 2024/8/5 23:31*/
@Service
public class RedisMessagePublisher {@Autowiredprivate RedisTemplate redisTemplate;// 发布消息到指定的通道public void publish(String message) {redisTemplate.convertAndSend("my-topic", message);System.out.println("发布消息: " + message + " 到通道: my-topic");}
}
spring.application.name=fabuserver.port=8999spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379

订阅者

@Configuration
public class RedisConfig {// 配置Redis消息监听容器@BeanRedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,MessageListenerAdapter listenerAdapter) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);// 订阅固定的通道 "my-topic"container.addMessageListener(listenerAdapter, new ChannelTopic("my-topic"));return container;}// 配置消息监听适配器,不需要指定方法名,默认调用handleMessage@BeanMessageListenerAdapter listenerAdapter(RedisMessageSubscriber subscriber) {//指定方法名接收消息return new MessageListenerAdapter(subscriber, "onMessage");//return new MessageListenerAdapter(subscriber);//使用默认方法handleMessage}
}

@Service
public class RedisMessageSubscriber {// 使用默认方法名 handleMessage 处理消息
//    public void handleMessage(String message, String channel) {
//        System.out.println("接收到消息: " + message + " 来自通道: " + channel);
//    }public void onMessage(String message, String channel) {System.out.println("接收到消息: " + message + " 来自通道: " + channel);}
}
spring.application.name=dingyueserver.port=9000spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379

这里只是简单介绍  处理方式有多种

  • 实现 MessageListener 接口:适合希望直接控制消息处理的类,并且需要实现 onMessage 方法。
  • 使用 MessageListenerAdapter:适合将消息处理方法绑定到已有的类和方法上,不需要实现 MessageListener 接口。
关键字:SpringBoot+Redis 发布与订阅

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: