栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java之SpringBoot集成redis实现消息队列

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java之SpringBoot集成redis实现消息队列

Java之SpringBoot集成redis实现消息队列
    • 一、设置好Redis的配置文件(application.yml)
    • 二、消息接收者实体类(RedisMessage )
    • 三、消息队列 订阅者(RedisSubConfig)
    • 四、发送消息(消息生产者)

一、设置好Redis的配置文件(application.yml)
spring:
  # redis 配置
  redis:
    # 地址
    host: localhost
    # 端口,默认为6379
    port: 6379
    # 数据库索引
    database: 2
    # 密码
    #password: root
    # 连接超时时间
    timeout: 10s
    lettuce:
      pool:
        # 连接池中的最小空闲连接
        min-idle: 0
        # 连接池中的最大空闲连接
        max-idle: 8
        # 连接池的最大数据库连接数
        max-active: 8
        # #连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1ms
二、消息接收者实体类(RedisMessage )
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;


@Slf4j
@Component
public class RedisMessage implements MessageListener {
    @Resource
    private RedisTemplate redisTemplate;
    
    @Override
    public void onMessage(Message message, byte[] pattern) {
        RedisSerializer serializer = redisTemplate.getStringSerializer();
        String msg = serializer.deserialize(message.getBody());
        System.out.println("接收到的消息是1:" + msg);
    }

}

三、消息队列 订阅者(RedisSubConfig)
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
public class RedisSubConfig {
    
    @Bean
    public RedisMessageListenerContainer container(
            RedisConnectionFactory connectionFactory, MessageListenerAdapter adapter) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.addMessageListener(adapter, new PatternTopic("userInfo"));
        container.addMessageListener(adapter, new PatternTopic("org"));
        return container;
    }
    
    @Bean
    public MessageListenerAdapter adapter(RedisMessage message){
        // onMessage 如果RedisMessage 中 没有实现接口,这个参数必须跟RedisMessage中的读取信息的方法名称一样
        return new MessageListenerAdapter(message, "onMessage");
    }
}
四、发送消息(消息生产者)
@RestController
public class TestController {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
 
    @GetMapping("/sendDirectMessage")
    public String sendDirectMessage(){
        stringRedisTemplate.convertAndSend("userInfo", "Hello world-userInfo");
        stringRedisTemplate.convertAndSend("org", "Hello world-org");
        return "ok";
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1023141.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号