Spring Boot Redis 消息队列实现教程
在 Spring Boot 中使用 Redis 作为消息队列可以通过以下步骤实现:
- 添加 Redis 依赖:在项目的 pom.xml 文件中添加 spring-boot-starter-data-redis 依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置 Redis 连接:在 application.properties 文件中配置 Redis 连接信息。
spring.redis.host=127.0.0.1
spring.redis.port=6379
- 创建消息发送者和消息接收者:创建一个发送消息的 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();
}
}
- 配置消息监听器容器:创建一个消息监听器容器来监听 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);
}
}
- 发送和接收消息:在需要发送消息的地方,注入 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 消息队列,并由监听器容器监听到,然后通过消息接收者进行处理。
原文地址: https://www.cveoy.top/t/topic/pjDM 著作权归作者所有。请勿转载和采集!