java使用redis作为消息队列

         java使用redis作为消息队列








编写一个类用来侦听redis发送过来的消息事件,类需要实现MessageListener接口的MessageListener方法


package com.ch17.redisdemo;


import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.core.RedisTemplate;


public class RedisMessageListenerDemo implements MessageListener {

private RedisTemplate  redisTemplate;


public RedisTemplate getRedisTemplate() {
return redisTemplate;
}


public void setRedisTemplate(RedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}


@Override
public void onMessage(Message msg, byte[] bytes) {
// TODO Auto-generated method stub

byte[] bodys =msg.getBody();

String body=(String)getRedisTemplate().getDefaultSerializer().deserialize(bodys);

byte[] channels=msg.getChannel();

String channel=(String)getRedisTemplate().getStringSerializer().deserialize(channels);

System.out.println("message from channel "+new String(bytes)+" is "+body);


}

}




配置spring,把接收消息到类发布到spring






   


  
     
 







假设之前已经配置好RedisTemlate,配置一RedisMessageListenerContainer容器,主要的属性
有connectionFactory,taskExecutor,messageListeners



 
 
 
  
 
 
 
      
  
   
  
   

 





     
     
       
       
       
       
       

       
       

     

  
   

  
 





启动应用程序,从redis客户发送一条消息


127.0.0.1:6379> publish  mychannel "aaahi"
(integer) 1
127.0.0.1:6379> publish  mychannel "aaahi"
(integer) 1
127.0.0.1:6379>  




java控制台输出如下


五月 05, 2018 12:15:04 下午 org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup start
信息: Starting beans in phase 2147483647
message from channel mychannel is aaahi



你可能感兴趣的:(Spring)