springboot redis 实现消息队列

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

  1. 添加依赖

在`pom.xml`文件中添加Spring Boot Redis和Jedis的依赖:

```xml

<dependencies>

<!-- Spring Boot Redis -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-redis</artifactId>

</dependency>

<!-- Jedis -->

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

</dependency>

</dependencies>

```

  1. 配置Redis

在`application.properties`文件中配置Redis连接信息:

```properties

spring.redis.host=localhost

spring.redis.port=6379

```

  1. 创建生产者

创建一个生产者类,用于发送消息到Redis消息队列:

```java

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.stereotype.Component;

@Component

public class Producer {

@Autowired

private RedisTemplate<String, String> redisTemplate;

public void sendMessage(String key, String message) {

redisTemplate.convertAndSend(key, message);

}

}

```

  1. 创建消费者

创建一个消费者类,用于从Redis消息队列接收消息:

```java

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.RedisTemplate;

import org.springframework.stereotype.Component;

@Component

public class Consumer implements MessageListener {

@Autowired

private RedisTemplate<String, String> redisTemplate;

@Override

public void onMessage(Message message, byte[] pattern) {

System.out.println("Received message: " + message.toString());

}

}

```

  1. 配置消费者监听

在配置类中,将消费者添加到Redis消息队列的监听器列表中:

```java

import org.springframework.beans.factory.annotation.Autowired;

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.ChannelTopic;

import org.springframework.data.redis.listener.RedisMessageListenerContainer;

import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;

import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration

public class RedisConfig {

@Autowired

private Consumer consumer;

@Bean

public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,

MessageListenerAdapter listenerAdapter) {

RedisMessageListenerContainer container = new RedisMessageListenerContainer();

container.setConnectionFactory(connectionFactory);

container.addMessageListener(listenerAdapter, topic());

return container;

}

@Bean

public MessageListenerAdapter listenerAdapter() {

return new MessageListenerAdapter(consumer, "onMessage");

}

@Bean

public ChannelTopic topic() {

return new ChannelTopic("messageQueue");

}

}

```

  1. 测试发送和接收消息

在Spring Boot应用的主类中,注入生产者并发送一条消息:

```java

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.CommandLineRunner;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class Application implements CommandLineRunner {

@Autowired

private Producer producer;

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

@Override

public void run(String... args) throws Exception {

producer.sendMessage("messageQueue", "Hello, Redis!");

}

}

```

运行应用后,控制台将输出接收到的消息:

```

Received message: Hello, Redis!

```

相关推荐
b***66615 分钟前
Spring Boot 整合 Apollo 配置中心实战
java·spring boot·后端
CoderYanger21 分钟前
递归、搜索与回溯-综合练习:27.黄金矿工
java·算法·leetcode·深度优先·1024程序员节
l***0622 分钟前
Redis--模糊查询--方法实例
数据库·redis·缓存
b***666126 分钟前
前端的dist包放到后端springboot项目下一起打包
前端·spring boot·后端
i***118628 分钟前
springboot使用redis
spring boot·redis·后端
vx_vxbs6635 分钟前
【SSM高校普法系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案
android·java·python·mysql·小程序·php·idea
张较瘦_37 分钟前
Springboot3 | ResponseEntity 完全使用教程
java·springboot·开发
毕设源码-郭学长37 分钟前
【开题答辩全过程】以 高校兼职系统为例,包含答辩的问题和答案
java·spring boot
黄嚯嚯39 分钟前
Jackson 多态反序列化详解:基于字段自动选择子类的优雅方案
java
h***38181 小时前
SpringBoot - Cookie & Session 用户登录及登录状态保持功能实现
java·spring boot·后端