在 Spring Boot 中使用 Redis 作为消息队列可以通过以下步骤实现:

  1. 添加 Redis 依赖:在项目的 pom.xml 文件中添加 spring-boot-starter-data-redis 依赖。
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  1. 配置 Redis 连接:在 application.properties 文件中配置 Redis 连接信息。
spring.redis.host=127.0.0.1
spring.redis.port=6379
  1. 创建消息发送者和消息接收者:创建一个发送消息的 Redis 消息发送者和一个接收消息的 Redis 消息接收者。
@Component
public class RedisMessageSender {

    @Autowired
    private StringRedisTemplate redisTemplate;

    public void sendMessage(String channel, String message) {
        redisTemplate.convertAndSend(channel, message);
    }
}

@Component
public class RedisMessageReceiver {

    @Autowired
    private CountDownLatch latch;

    public void receiveMessage(String message) {
        System.out.println('Received message: ' + message);
        latch.countDown();
    }
}
  1. 配置消息监听器容器:创建一个消息监听器容器来监听 Redis 消息,并指定消息接收者的方法作为回调。
@Configuration
public class RedisMessageListenerContainerConfig {

    @Autowired
    private RedisMessageReceiver receiver;

    @Bean
    public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
            MessageListenerAdapter listenerAdapter) {

        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.addMessageListener(listenerAdapter, new ChannelTopic('myChannel'));

        return container;
    }

    @Bean
    public MessageListenerAdapter listenerAdapter() {
        return new MessageListenerAdapter(receiver, 'receiveMessage');
    }

    @Bean
    public CountDownLatch latch() {
        return new CountDownLatch(1);
    }
}
  1. 发送和接收消息:在需要发送消息的地方,注入 Redis 消息发送者,并调用 sendMessage 方法发送消息。在接收消息的地方,注入 Redis 消息接收者,并在需要处理消息的方法上添加 @RedisListener 注解。
@RestController
public class MessageController {

    @Autowired
    private RedisMessageSender messageSender;

    @GetMapping('/send')
    public String sendMessage() {
        messageSender.sendMessage('myChannel', 'Hello, Redis!');
        return 'Message sent';
    }
}

@Component
public class RedisMessageReceiver {

    @RedisListener(channel = 'myChannel')
    public void receiveMessage(String message) {
        System.out.println('Received message: ' + message);
    }
}

这样,当发送消息的接口被调用时,消息将被发送到 Redis 消息队列,并由监听器容器监听到,然后通过消息接收者进行处理。

Spring Boot Redis 消息队列实现教程

原文地址: https://www.cveoy.top/t/topic/pjDM 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录