SpringBoot项目redis的消息队列

第一步导入redis依赖即可

第二步修改配置文件(这里我用的是mvn项目)

	spring.application.name=springbootdemo
  	spring.rabbitmq.host=192.168.0.1
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=root
    spring.rabbitmq.password=123456

第三步(注册redisTemplate)

	import org.springframework.context.annotation.Bean;
	import org.springframework.context.annotation.Configuration;
	import org.springframework.data.redis.connection.RedisConnectionFactory;
	import org.springframework.data.redis.core.StringRedisTemplate;
	
	/**
	 * 注册redisTemplate,作为消息队列的发布者
	 */
	@Configuration
	public class PublisherConfig {
	    @Bean
	    public StringRedisTemplate getRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
	        return new StringRedisTemplate(redisConnectionFactory);
	    }
	}

第四步(创建一个接收消息的类,继承MessageListener,也可以不继承)


继承
	import org.slf4j.Logger;
	import org.slf4j.LoggerFactory;
	import org.springframework.beans.factory.annotation.Autowired;
	import org.springframework.data.redis.connection.Message;
	import org.springframework.data.redis.connection.MessageListener;
	import org.springframework.data.redis.core.StringRedisTemplate;
	import org.springframework.data.redis.serializer.RedisSerializer;
	import org.springframework.stereotype.Component;
	@Component
	public class Receiver implements MessageListener {
	    private static Logger logger = LoggerFactory.getLogger(Receiver.class);
	 
	    @Autowired
	    private StringRedisTemplate redisTemplate;
	 
	    @Override
	    public void onMessage(Message message, byte[] pattern) {
	        RedisSerializer<String> valueSerializer = redisTemplate.getStringSerializer();
	        String deserialize = valueSerializer.deserialize(message.getBody());
	        logger.info("收到的mq消息" + deserialize);
	    }
	}
不继承
	import org.slf4j.Logger;
	import org.slf4j.LoggerFactory;
	import org.springframework.beans.factory.annotation.Autowired;
	import org.springframework.data.redis.connection.Message;
	import org.springframework.data.redis.connection.MessageListener;
	import org.springframework.data.redis.core.StringRedisTemplate;
	import org.springframework.data.redis.serializer.RedisSerializer;
	import org.springframework.stereotype.Component;
	@Component
	public class Receiver {
	    private static Logger logger = LoggerFactory.getLogger(Receiver.class);	
	    @Autowired
	    private StringRedisTemplate redisTemplate;
	
	    public void receiveMessage(String message) {
	        System.out.println("收到的mq消息" + message);
	    }
	
	}

第五步(消息订阅者配置类)

	import org.springframework.boot.autoconfigure.AutoConfigureAfter;
	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;
	
	
	@Configuration
	@AutoConfigureAfter({Receiver.class})
	public class SubscriberConfig {
	    public static final String MSG_CONFIG="TOPIC_NAME";
	
	    /**
	     * 消息监听适配器,注入接受消息方法,输入方法名字 反射方法
	     */
	    @Bean
	    public MessageListenerAdapter getMessageListenerAdapter(Receiver receiver) {
	        return new MessageListenerAdapter(receiver,"receiveMessage"); //当没有继承MessageListener时需要写方法名字
	    }
	
	    /**
	     * 创建消息监听容器
	     */
	    @Bean
	    public RedisMessageListenerContainer getRedisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory, MessageListenerAdapter messageListenerAdapter) {
	        RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
	        redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
	        redisMessageListenerContainer.addMessageListener(messageListenerAdapter, new PatternTopic(SubscriberConfig.MSG_CONFIG));
	        return redisMessageListenerContainer;
	    }
	}

第六步(消息生产者发送消息)

	StringRedisTemplate  redisTemplate= SpringUtil.getBean(StringRedisTemplate.class);
	redisTemplate.convertAndSend(SubscriberConfig.MSG_CONFIG, result.toString());  //使用消息队列
这里用到的SpringUtil类是 spring获取bean工具类spring获取bean工具类参考

最后大工告成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值