SpringBoot+Redis(官方案例)

  1. 在线文档
  2. 项目结构
    1.源码克隆:git clone https://github.com/spring-guides/gs-messaging-redis.git
    2.包含两个项目initial和complete,initial可以根据文档练习完善,complete是完整项目
    3.功能描述:构建应用程序,使用 Spring Data Redis 发布和订阅通过 Redis 发送的消息
    4.Redis安装:https://blog.csdn.net/tongxin_tongmeng/article/details/127491655

  3. 源码分析

    1.POM依赖
    <dependencies>
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-data-redis</artifactId>
    	</dependency>
    
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-test</artifactId>
    		<scope>test</scope>
    	</dependency>
    </dependencies>
    2.入口类
    // https://blog.csdn.net/tongxin_tongmeng/article/details/128401278
    @SpringBootApplication
    public class MessagingRedisApplication {
    
    	private static final Logger LOGGER = LoggerFactory.getLogger(MessagingRedisApplication.class);
    
    	@Bean
    	RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
    			MessageListenerAdapter listenerAdapter) {
    
    		RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    		container.setConnectionFactory(connectionFactory);
    		container.addMessageListener(listenerAdapter, new PatternTopic("chat"));
    
    		return container;
    	}
    
    	@Bean
    	MessageListenerAdapter listenerAdapter(Receiver receiver) {
    		return new MessageListenerAdapter(receiver, "receiveMessage");
    	}
    
    	@Bean
    	Receiver receiver() {
    		return new Receiver();
    	}
    
    	@Bean
    	StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
    		return new StringRedisTemplate(connectionFactory);
    	}
    
    	public static void main(String[] args) throws InterruptedException {
    
    		ApplicationContext ctx = SpringApplication.run(MessagingRedisApplication.class, args);
    
    		StringRedisTemplate template = ctx.getBean(StringRedisTemplate.class);
    		Receiver receiver = ctx.getBean(Receiver.class);
    
    		while (receiver.getCount() == 0) {
    
    			LOGGER.info("Sending message...");
    			template.convertAndSend("chat", "Hello from Redis!");
    			Thread.sleep(500L);
    		}
    
    		System.exit(0);
    	}
    }
    3.发送消息
    public static void main(String[] args) throws InterruptedException {
    
    	ApplicationContext ctx = SpringApplication.run(MessagingRedisApplication.class, args);
    
    	StringRedisTemplate template = ctx.getBean(StringRedisTemplate.class);
    	Receiver receiver = ctx.getBean(Receiver.class);
    
    	while (receiver.getCount() == 0) {
    
    		LOGGER.info("Sending message...");
    		template.convertAndSend("chat", "Hello from Redis!");
    		Thread.sleep(500L);
    	}
    
    	System.exit(0);
    }
    4.接收消息
    public class Receiver {
        private static final Logger LOGGER = LoggerFactory.getLogger(Receiver.class);
    
        private AtomicInteger counter = new AtomicInteger();
    
        public void receiveMessage(String message) {
            LOGGER.info("Received <" + message + ">");
            counter.incrementAndGet();
        }
    
        public int getCount() {
            return counter.get();
        }
    }
  4. 项目演示​​​​​​​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

童心同萌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值