使用Spring-Redis实现消息的发布/订阅

Redis服务器可以实现简单的消息“发布/订阅”服务,下面对spring-redis实现做一个说明

 

spring-redis使用RedisMessageListenerContainer进行消息监听,客户程序需要自己实现MessageListener,并以指定的topic注册到RedisMessageListenerContainer,

这样,在指定的topic上如果有消息,RedisMessageListenerContainer便会通知该MessageListener。

 

下面是在spring配置文件中配置spring-redis:

 


        
        
        
        

        
        
    

    
        
        
        
        
        
    
    
    
        
    

    
        
    

 

上面例子中,最后两个bean的配置是实现发布/订阅服务的关键,RedisMessageListener是自己写的实现了org.springframework.data.redis.connection.MessageListener的业务类,

并以“topic123” 这个topic注册到RedisMessageListenerContainer。RedisMessageListenerContainer在消息到达后负责通知MessageListener。下面是RedisMessageListener的代码:

class RedisMessageListener implements MessageListener {

    @Autowired
    RedisTemplate redisTemplate;

    RedisSerializer serializer

    @Override
    void onMessage(Message message, byte[] pattern) {
        serializer = redisTemplate.getValueSerializer()
        String messageStr = serializer.deserialize(message.body)
        println("message received:" + messageStr)
    }
}

这样,应用启动时,消息的订阅方(subscriber),就注册好了。这时候只要使用一个简单的程序,模拟publisher,向指定topic发布消息,RedisMessageListener就可以接收到消息,

spring-redis的写法是这样:

redisTemplate.convertAndSend("topic123","hello there!")

你可能感兴趣的:(java)