Spring-data-redis提供了redis的发布-订阅消息队列功能。具体实例如下:
下面是需要注入的两个bean,一个是消息容器,有多种实现,redis只是其中一种,另一个是监听器,该
监听器可以通过自定义的类指明消息处理方法来对消息进行接受和处理。
package com.tom.ms.redis; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.listener.PatternTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; /** * redis发布订阅监听配置 * @author tomZ * @date 2017年11月14日 * @desc TODO */ @Configuration public class RedisMessageConfiguration { private static final Logger logger = LoggerFactory.getLogger(Receiver.class); /** * 容器监听bean * @param fac * @param adapter * @return */ @Bean public RedisMessageListenerContainer container(RedisConnectionFactory fac, MessageListenerAdapter adapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(fac); container.addMessageListener(adapter, new PatternTopic("chat")); logger.info("Redis Message Container bean init finished."); return container; } /** * 消息监听注入到bean,必须注入,不能手动new,因为该类实现了InitializingBean,需要执行afterPropertiesSet方法, * 注入到bean会自动执行 * @return */ @Bean public MessageListenerAdapter adapter() { return new MessageListenerAdapter(new Receiver(), "receiveMessage"); } }
Receiver的类如下,非常简单:
在需要的地方使用SpringRedisTemplate来发送消息,直接注入即可。package com.tom.ms.redis; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 消息接收Pojo * @author tomZ * @date 2017年11月14日 * @desc TODO */ public class Receiver { private static final Logger logger = LoggerFactory.getLogger(Receiver.class); public void receiveMessage(String msg) { logger.info("redis message service receive: "+msg); } }
@AutoWired
private StringRedisTempate redisTemplate;
redisTemplate.convertAndSend("chat","hi,SB");
Spring-Redis基于Redis的MS消息服务
最新推荐文章于 2024-03-19 09:41:58 发布