ConsulCfgOptions.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. namespace Apq.Cfg.Consul;
  2. /// <summary>
  3. /// Consul 配置选项
  4. /// </summary>
  5. public sealed class ConsulCfgOptions
  6. {
  7. /// <summary>
  8. /// Consul 服务地址,默认 http://localhost:8500
  9. /// </summary>
  10. public string Address { get; set; } = "http://localhost:8500";
  11. /// <summary>
  12. /// ACL Token(可选)
  13. /// </summary>
  14. public string? Token { get; set; }
  15. /// <summary>
  16. /// 数据中心名称(可选)
  17. /// </summary>
  18. public string? Datacenter { get; set; }
  19. /// <summary>
  20. /// KV 键前缀,默认 "config/"
  21. /// </summary>
  22. public string KeyPrefix { get; set; } = "config/";
  23. /// <summary>
  24. /// 是否启用热重载,默认 true
  25. /// </summary>
  26. public bool EnableHotReload { get; set; } = true;
  27. /// <summary>
  28. /// Blocking Query 等待时间,默认 5 分钟
  29. /// </summary>
  30. public TimeSpan WaitTime { get; set; } = TimeSpan.FromMinutes(5);
  31. /// <summary>
  32. /// 连接超时时间,默认 10 秒
  33. /// </summary>
  34. public TimeSpan ConnectTimeout { get; set; } = TimeSpan.FromSeconds(10);
  35. /// <summary>
  36. /// 重连间隔,默认 5 秒
  37. /// </summary>
  38. public TimeSpan ReconnectInterval { get; set; } = TimeSpan.FromSeconds(5);
  39. /// <summary>
  40. /// 配置数据格式,默认 KeyValue(每个 key 一个值)
  41. /// </summary>
  42. public ConsulDataFormat DataFormat { get; set; } = ConsulDataFormat.KeyValue;
  43. /// <summary>
  44. /// 当 DataFormat 为 Json/Yaml 时,指定要读取的单个 key
  45. /// </summary>
  46. public string? SingleKey { get; set; }
  47. }
  48. /// <summary>
  49. /// Consul 数据格式
  50. /// </summary>
  51. public enum ConsulDataFormat
  52. {
  53. /// <summary>
  54. /// 每个 KV 键对应一个配置项
  55. /// </summary>
  56. KeyValue,
  57. /// <summary>
  58. /// 单个 key 存储 JSON 格式的配置
  59. /// </summary>
  60. Json,
  61. /// <summary>
  62. /// 单个 key 存储 YAML 格式的配置
  63. /// </summary>
  64. Yaml
  65. }