| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package com.qqflow.engine.config;
- import jakarta.annotation.PostConstruct;
- import jakarta.annotation.PreDestroy;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.context.annotation.Configuration;
- import redis.embedded.RedisServer;
- import java.io.IOException;
- import java.net.Socket;
- @Slf4j
- @Configuration
- public class EmbeddedRedisConfig {
- private RedisServer redisServer;
- @PostConstruct
- public void startRedis() {
- if (isPortAvailable(6379)) {
- try {
- log.info("本地 Redis 未检测到,启动 Embedded Redis (端口: 6379)...");
- redisServer = new RedisServer(6379);
- redisServer.start();
- log.info("Embedded Redis 启动成功");
- } catch (IOException e) {
- log.error("Embedded Redis 启动失败", e);
- }
- } else {
- log.info("检测到外部 Redis 正在运行 (端口: 6379),跳过 Embedded Redis 启动");
- }
- }
- @PreDestroy
- public void stopRedis() {
- if (redisServer != null && redisServer.isActive()) {
- try {
- log.info("正在停止 Embedded Redis...");
- redisServer.stop();
- } catch (IOException e) {
- log.error("Embedded Redis 停止失败", e);
- }
- }
- }
- private boolean isPortAvailable(int port) {
- try (Socket socket = new Socket("localhost", port)) {
- return false;
- } catch (IOException e) {
- return true;
- }
- }
- }
|