java spring redis 消息发布与监听
作者:bin短信、邮件、微信等通知,常常会用到发布订阅模式。
发布者发布消息后,订阅者根据消息去做对应等事情,比如一个订单购买成功的通知发布后,短信、邮件、微信等订阅者消费消息,并且推送给用户。
那么我们在java spring中如何使用呢?
首先注册一个Redis消息监听器,这里使用@Component注解,所以Spring Boot扫描到后,会将其装配置IoC容器中。
@Component public class RedisMessageListener 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.pringln(topic); } }
然后我们Spring中去使用上面创建的监听器
//自动装配上面的监听器组件 @Autowired private MessageListener redisMessageListener @Configuration public class RedisListenerConfig{ @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //其中ChannelTopic为指定频道订阅,PatternTopic为模糊匹配 container.addMessageListener(redisMessageListener, new ChannelTopic("Topic1")); return container; } }
这样,我们使用如下命令进行消息发布时:
publish topic1 msg
或者在spring中
redisTemplate.convertAndSend(channel, message)
可以在监听器中的System.out中得到结果消息