Login
网站首页 > 文章中心 > 其它

Spring_boot_使用Redis_消息队列

作者:小编 更新时间:2023-08-14 08:28:32 浏览量:169人看过

Spring_boot_使用Redis_消息队列-图1

package com.loan.msg.config;

import com.loan.msg.service.MessageReceiver;
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;

/**
 * @author 周志伟
 * @projectname 项目名称: ${project_name}
 * @classname: RedisMQConfig
 * @description:
 * @date 2018/11/13:10:12
 */
@Configuration
public class RedisMQConfig {
/**
 * @param connectionFactory 连接工厂
 * @param listenerAdapter   监听处理器1
 * @param listenerAdapter   监听处理器2 (参数名称需和监听处理器的方法名称一致,因为@Bean注解默认注入的id就是方法名称)
 * @return
 */
    RedisMessageListenerContainer container = new RedisMessageListenerContainer();
    //订阅一个叫mq_01 的信道
    container.addMessageListener(listenerAdapter, new PatternTopic("mq_01"));
    //订阅一个叫mq_02 的信道
    container.addMessageListener(listenerAdapter2, new PatternTopic("mq_02"));
    //这个container 可以添加多个 messageListener
    return container;
/**
 * @param receiver 处理器类
 * @return
 */
    //给messageListenerAdapter 传入一个消息接收的处理器,利用反射的方法调用"receiveMessage"
    return new MessageListenerAdapter(receiver, "receiveMessage"); //receiveMessage:接收消息的方法名称
    }

/**
 * @param receiver 处理器类
 * @return
 */
    //给messageListenerAdapter 传入一个消息接收的处理器,利用反射的方法调用"receiveMessage2"
    return new MessageListenerAdapter(receiver, "receiveMessage2"); //receiveMessage:接收消息的方法名称
    }
}
package com.loan.msg.service;

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

/**
 * @author 周志伟
 * @projectname 项目名称: ${project_name}
 * @classname: SendMessageService
 * @description:
 * @date 2018/11/13:10:11
 */
@Service
public class SendMessageService {
private StringRedisTemplate stringRedisTemplate;

/**
 * @param channel 消息信道
 * @param message 消息内容
 */
public void sendMessage(String channel, String message) {
/**
 */
public void setStr01() {
    this.sendMessage("mq_01", "发送信息内容01");
    this.sendMessage("mq_01", "发送信息内容011");
    this.sendMessage("mq_02", "发送信息内容02");

}
}
package com.loan.msg.service;

import org.springframework.stereotype.Component;

/**
 * @author 周志伟
 * @projectname 项目名称: ${project_name}
 * @classname: MessageReceiver
 * @description:
 * @date 2018/11/13:10:14
 */
@Component
public class MessageReceiver {
/**
 **/
public void receiveMessage(String message) {
    System.out.println("receiveMessage接收到的消息:" + message);
/**
 **/
public void receiveMessage2(String message) {
    System.out.println("receiveMessage2接收到的消息:" + message);
}
}
//向redis里存入数据和设置缓存时间
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);  
 
//val做-1操作
stringRedisTemplate.boundValueOps("test").increment(-1);  
 
//根据key获取缓存中的val 
stringRedisTemplate.opsForValue().get("test") 
 
//val +1  
stringRedisTemplate.boundValueOps("test").increment(1);
 
//根据key获取过期时间  
stringRedisTemplate.getExpire("test")
 
//根据key获取过期时间并换算成指定单位 
stringRedisTemplate.getExpire("test",TimeUnit.SECONDS) 
 
//根据key删除缓存
stringRedisTemplate.delete("test");  
 
//检查key是否存在,返回boolean值
stringRedisTemplate.hasKey("546545");  
 
//向指定key中存放set集合
stringRedisTemplate.opsForSet().add("red_123", "1","2","3");
  
//设置过期时间
stringRedisTemplate.expire("red_123",1000 , TimeUnit.MILLISECONDS); 
 
//根据key查看集合中是否存在指定数据  
stringRedisTemplate.opsForSet().isMember("red_123", "1")
 
//根据key获取set集合
stringRedisTemplate.opsForSet().members("red_123")

以上就是土嘎嘎小编为大家整理的Spring_boot_使用Redis_消息队列相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章