💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 1.配置管道《监听器容器》 ### 注意 redis的发布消息必须马上消费,否则就会丢失。只能消费一次 ~~~ /** * 监听器容器 在配置类中配置 * 负责信息监听的所有线程并分到配监听器中进行处理 * * @param * @return */ @Bean RedisMessageListenerContainer container(RedisConnectionFactory redisConnectionFactory, MessageListenerAdapter messageListenerAdapter) { //Redis消息监听器 RedisMessageListenerContainer container = new RedisMessageListenerContainer(); // 设置工厂 container.setConnectionFactory(redisConnectionFactory); //设置监听者绑定的管道 ArrayList<Topic> topics = new ArrayList<>(); topics.add(new PatternTopic("log")); // 第一个参数是监听者 第二个是监听的管道 container.addMessageListener(messageListenerAdapter, topics); return container; } /** * 消息监听器适配器 能将消息委托给目标方法 * @param messageListener * @return */ @Bean public MessageListenerAdapter messageListenerAdapter(MessageListener messageListener) { return new MessageListenerAdapter(messageListener); } ~~~ ## 2.配置消息订阅者 ~~~ /** * 信息订阅者 * @author ZengMingyong * @since 2022/2/27 */ @Slf4j @Component public class Subscriber implements MessageListener { @Autowired private RedisTemplate redisTemplate; /** * 信息处理 * @param message 信息管道和信息内容 * @param pattern */ @Override public void onMessage(Message message, byte[] pattern) { Object channel = redisTemplate.getKeySerializer().deserialize(message.getChannel()); Object body = redisTemplate.getValueSerializer().deserialize(message.getBody()); log.info("消息管道:{},消息:{}",channel,body); } } ~~~ # 3.发布者 ~~~ /** * 发布者 * @return */ @GetMapping("/s") public void index() { HashMap<String, String> map = new HashMap<>(); map.put("admin","user"); map.put("username","zhangshan"); redisTemplate.convertAndSend("log",map); } ~~~