# springboot-starter-redis-mq **Repository Path**: hadwinling/springboot-starter-redis-mq ## Basic Information - **Project Name**: springboot-starter-redis-mq - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-12 - **Last Updated**: 2025-11-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## RedisMQ简介 在SpringBoot-Starter上,基于RedisTemplate的Redis Stream API实现的消息队列,注解驱动编程,快速上手。 ## Quick Start #### 1、拉取编译 ```shell git clone http://gitlab.tyu.wiki/jdragon/spring-redis-mq.git mvn install ``` #### 2、依赖导入 ```xml com.jdragon.starter springboot-starter-redis-mq 1.0-SNAPSHOT ``` #### 3、添加配置 使用的是springboot自带的RedisTemplate,可通过spring自带参数设置redismq的配置 ```yml spring: redis: host: 127.0.0.1 port: 6379 ``` #### 4、生产消费示例 ```java @Data public class Job { private Integer id; private Map param; @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss") private Date createDate; @JsonSerialize(using = LocalDateTimeSerializer.class) @JsonDeserialize(using = LocalDateTimeDeserializer.class) private LocalDateTime endDate; } ``` ##### 1)生产者 创建一个TestController类,注入`RedisMQSender` PS:redis发送生产消息的方法`RedisMQSender.send(参数1,参数2)`: - 参数1是String类型的消息队列名称 - 参数2是你想传递的任意数据。 ```java @RestController @RequestMapping("test") public class TestController { @Autowired private RedisMQSender redisMQSender; @GetMapping("redisMQSender") public String redisMQSender() { String streamKey = "streamKey"; redisMQSender.send(streamKey, "你好"); return "成功"; } @GetMapping("redisMQSender2") public String redisMQSender2() { String streamKey = "streamKey2"; HashMap param = new HashMap<>(); param.put("id", 1); param.put("name", "张三"); param.put("paramInline", new HashMap<>()); Job job = new Job(); job.setId(1); job.setParam(param); job.setCreateDate(new Date()); job.setEndDate(LocalDateTime.now()); redisMQSender.send(streamKey, job); return "成功"; } } ``` ##### 2)消费者 创建一个RedisListenerContainer类用于定义redis队列消息监听处理方法。 @RedisListener注解支持参数 - queueName:监听队列名称,默认为default_queue,表示该方法你需要处理的哪个队列的消息。 - group:消费者组,默认为default_group,消费者组内存在竞争关系。 - customer:消费者名称,默认为consumer PS: 实现redis队列监听只需在Spring容器所管理的Bean中的方法上添加注解`@RedisListener(queueName,group,customer)`,注意被@RedisListener修饰的方法只能包含一个参数,这个参数的可以一个`RedisMessage`类型的参数,也可以是你需要传递的直接消息类型。 ```java @Slf4j @Component public class RedisMQListener { @RedisListener(queueName = "streamKey") public void test(RedisMessage redisMessage) { log.info("redis message 接受到信息:{}", redisMessage.getData()); } @RedisListener(queueName = "streamKey") public void test2(String redisMessage) { log.info("接受到信息:{}", redisMessage); } @RedisListener(queueName = "streamKey2") public void test3(RedisMessage job) { log.info("redis message 接受到信息:{}", job.getData()); } @RedisListener(queueName = "streamKey2") public void test4(Job job) { log.info("接受到信息:{}", job); } } ``` #### 3)启动结果 见以下日志打印,即为启动监听成功 ```powershell 2021-12-17 17:08:26.787 [main] INFO c.j.s.r.m.c.RedisMessageQueueRegister [run 101] - 启动消息队列监听器:【streamKey2.default_group】 2021-12-17 17:08:26.871 [main] INFO c.j.s.r.m.c.RedisMessageQueueRegister [run 101] - 启动消息队列监听器:【streamKey.default_group】 ``` 请求`/test/redisMQSender` ```powershell 2021-12-17 17:11:14.633 [SimpleAsyncTaskExecutor-2] INFO c.j.s.r.m.c.RedisMessageQueueRegister [lambda$run$0 78] - stream message。messageId=1639732274611-0, stream=streamKey, body={"queueName":"streamKey","data":"你好","createTime":"2021-12-17 05:11:14"} 2021-12-17 17:11:14.634 [SimpleAsyncTaskExecutor-2] INFO o.e.r.m.t.listener.RedisMQListener [test 20] - redis message 接受到信息:你好 2021-12-17 17:11:14.635 [SimpleAsyncTaskExecutor-2] INFO o.e.r.m.t.listener.RedisMQListener [test3 30] - 接受到信息:你好 ``` 请求`/test/redisMQSender2` ```powershell 2021-12-17 17:11:20.547 [SimpleAsyncTaskExecutor-1] INFO c.j.s.r.m.c.RedisMessageQueueRegister [lambda$run$0 78] - stream message。messageId=1639732280628-0, stream=streamKey2, body={"queueName":"streamKey2","data":{"id":1,"param":{"paramInline":{},"name":"张三","id":1},"createDate":"2021-12-17 05:11:20","endDate":"2021-12-17T17:11:20.461"},"createTime":"2021-12-17 05:11:20"} 2021-12-17 17:11:20.547 [SimpleAsyncTaskExecutor-1] INFO o.e.r.m.t.listener.RedisMQListener [test2 25] - redis message 接受到信息:{id=1, param={paramInline={}, name=张三, id=1}, createDate=2021-12-17 05:11:20, endDate=2021-12-17T17:11:20.461} 2021-12-17 17:11:20.548 [SimpleAsyncTaskExecutor-1] INFO o.e.r.m.t.listener.RedisMQListener [test4 35] - 接受到信息:Job(id=1, param={paramInline={}, name=张三, id=1}, createDate=Fri Dec 17 05:11:20 CST 2021, endDate=2021-12-17T17:11:20.461) ```