1.简介
使用pub/pub/sub主题订阅者模式,可以实现1:N的消息队列。
缺点:在消费者下线的情况下,生产的消息会丢失。此场景,建议用MQ。
2.代码
被请求的接口(被订阅者),使用redis队列,放于队列中。
package com.airboot.bootdemo.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(“/SentRedisController”)
public class SentRedisController {
@Autowired
private RedisTemplate redisTemplate;
/**
-
redis生产者测试
-
@param data
-
@return
*/
@GetMapping(“/send1”)
String send1(String data) {
redisTemplate.convertAndSend(“testkafka”, data);
return “success”;
}
/**
-
redis生产者测试
-
@param data
-
@return
*/
@GetMapping(“/send2”)
String send2(String data) {
redisTemplate.convertAndSend(“testkafka1”, data);
return “success”;
}
}
配置监听器。监听队列。
package com.airboot.bootdemo.config;
import com.airboot.bootdemo.controller.RedisSubscriber;
import com.airboot.bootdemo.controller.RedisSubscriberTwo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;