利用redis实现消息订阅和推送

redis的消息推送可以用在同一项目中,也可用在不同项目中,文章中我们以同一个项目为例:

首先我们需要一个maven 项目,

在pom文件中加入如下配置:


10.20.200.21
6379
wangdai.com
15000
1000
true 100
true
2000

对应在conf中新建redis.properties文件:

redis.hostName=${profile.redis.ip}
redis.passWord=${profile.redis.password}
redis.port=${profile.redis.port}
redis.timeout=${profile.redis.timeout}
redis.usePool=${profile.redis.usePool}
redis.maxIdle=6
redis.minEvictableIdleTimeMillis=300000
redis.numTestsPerEvictionRun=3
redis.timeBetweenEvictionRunsMillis=60000
redis.maxIdle=${profile.redis.maxIdle}
redis.maxTotal=${profile.redis.maxTotal}
redis.maxWaitMillis=${profile.redis.maxWaitMillis}
redis.testOnBorrow=${profile.redis.testOnBorrow}

在applicationContext.xml 中加入相关配置

	
		
			
				classpath:conf/jdbc.properties
				classpath:conf/dubbo.properties
				classpath:conf/redis.properties
			
		
	

新建一个application-redis.xml 的配置文件




	
		
		
		
		
	
	  

	
	  
	  
	  
	  
	   
	
       
       
         
            
            
               
            
            
               
          
          
              
        
     
	
 	
	 redis发布订阅配置
     
   
  消息监听适配器  delegate属性指定真正的目标处理器  
    
        
          
    
    
    消息监听适配器对应的监听容器
     
         
    
	
	
	
	

application-redis.xml 中配置消息发送者的信息 和 监听者的信息。

我们需要创建一个监听处理类:TQMessageDelegateListener

package com.hz.hzdjr.controller;

public class TQMessageDelegateListener  {

    public void  handleMessage(String message){
	
    	System.out.println("监听到的消息为:"+message);
	
	}
}

我们需要创建一个消息发送方的服务:

RedisService:

package com.hz.hzdjr.system.service;

public interface RedisService {
	/*
	 * 设置频道
	 */
	public static final String TQCHANNEL = "channel_message";
	public void sendMessage(String channel, String message);
}

RedisServiceImpl:

package com.hz.hzdjr.system.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import com.hz.hzdjr.system.service.RedisService;

@Service
public class RedisServiceImpl implements RedisService {
	@Autowired
	public RedisTemplate redisTemplate;
	@Override
	public void sendMessage(String channel, String message) {
	System.out.println("开始发布消息。。。");
	redisTemplate.convertAndSend(channel, message); 
	System.out.println("发布成功!");
	}
}

此时我们的准备工作就结束了。

我们只需要启动项目后调用redisService.sendMessage();方法发送消息,那么

handleMessage监听方法将会被执行。

注意:消息发送方的channel  必须和监听方的一样。





你可能感兴趣的:(java,tomcat,redis)