spring-redis实现消息生产者发布和消费者订阅

前提是你已经有一个可运行的redis的demo,直接上核心redis配置文件:



    
    
    
    
    
    
    

 

    
        
            
        
    
    
        
            
                
                
            
            
                
                
            
            
                
                
            
        
    

 

    
    
    

 

    

 

    

 
    
    
 
  
  
 
  
      
    
 
消息生产者:

import java.io.Serializable;
 
import org.springframework.data.redis.core.RedisTemplate;
 
import com.hthl.xxtd.model.email.EmailRecord;
 
/**
 *
 * @see    
 * @date
 * @version  
 * @desc    消息发布者
 */
public class RedisService {
     
    private RedisTemplate redisTemplate;
     
    /**
     * 发布者:发送邮件
     * */
    public void sendEmail(EmailRecord emailRecord){
        redisTemplate.convertAndSend("hthl_email",emailRecord);
    }
}
消费者:

import javax.annotation.Resource;
 
import org.apache.log4j.Logger;
 
import com.hthl.xxtd.model.email.EmailRecord;
import com.hthl.xxtd.service.email.EmailChannelService;
 
import net.sf.json.JSONObject;
/**
 * 订阅者
 * */
public class RedisMessageListenerContainer{
    private static final Logger logger = Logger.getLogger(RedisMessageListenerContainer.class);
    @Resource
    private EmailChannelService emailChannelService;
 
    //发送邮件
    public void sendEmail(EmailRecord  emailRecord, String channel) {
	//do something
        logger.info("订阅者"+channel+"收到邮件:"+ JSONObject.fromObject(emailRecord).toString());
    }
 
}
扩展:这里可设置多个频道,,消费者亦可根据不同channel筛选订阅



你可能感兴趣的:(多线程并发)