缺点
不能保证消息必达,比如订阅者的服务器挂了
命令操作
命令操作见redis的官网
springBoot整合redis发布订阅
配置类:
@Configuration public class PubSubConfig { @Autowired private RedisSub redisSub; //初始化监听器 @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(listenerAdapter, new PatternTopic("mytopic")); return container; } @Bean MessageListenerAdapter listenerAdapter() { //给messageListenerAdapter 传入一个消息接受的处理器,利用反射的方法调用“receiveMessage” return new MessageListenerAdapter(redisSub, "receiveMessage"); } }
订阅类:
@Service public class RedisSub { public void receiveMessage(String message){ System.out.println(message); } }
发布
redisTemplate.convertAndSend("mytopic","发送的消息");//参数1是主题,参数2是发送的内容
或者
jedis.publish("mychannel", line); //从 mychannel 的频道上推送消息