Shared.ConsulConfig
1.1.0
dotnet add package Shared.ConsulConfig --version 1.1.0
NuGet\Install-Package Shared.ConsulConfig -Version 1.1.0
<PackageReference Include="Shared.ConsulConfig" Version="1.1.0" />
<PackageVersion Include="Shared.ConsulConfig" Version="1.1.0" />
<PackageReference Include="Shared.ConsulConfig" />
paket add Shared.ConsulConfig --version 1.1.0
#r "nuget: Shared.ConsulConfig, 1.1.0"
#:package Shared.ConsulConfig@1.1.0
#addin nuget:?package=Shared.ConsulConfig&version=1.1.0
#tool nuget:?package=Shared.ConsulConfig&version=1.1.0
🧠 Shared.ConsulConfig
Biblioteca .NET compartilhada para integração com o Consul, com cache em memória e atualização automática das variáveis de configuração.
Ideal para múltiplos projetos que utilizam o Consul como fonte de variáveis de ambiente, permitindo que cada sistema mantenha suas configurações atualizadas sem reiniciar a aplicação.
🚀 Funcionalidades
- 🔁 Atualização automática das chaves do Consul em intervalos configuráveis
- 💾 Cache em memória usando
IMemoryCache - ⚙️ Integração simples via extensão
AddConsulConfiguration() - 🧩 Suporte a chaves personalizadas e callbacks (
Action<string>) - 🔒 Compatível com tokens ACL e Consul KV
📦 Instalação
Adicionar a referência ao pacote (GitHub Packages)
dotnet add package Shared.ConsulConfig --version 1.1.0 --source "https://nuget.pkg.github.com/codewiththiago/index.json"
⚠️ É necessário autenticar com um token do GitHub (GH_TOKEN) que tenha permissão de leitura em packages.
⚙️ Uso
1️⃣ Registro no Program.cs ou Startup.cs
using Shared.ConsulConfig;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddConsulConfiguration(
consulUrl: "http://consul-server:8500/v1/kv",
token: "<SEU_CONSUL_TOKEN>",
configSetters: new List<KeyValuePair<string, Action<string>>>
{
new("bureaus-external/shared/rabbitmq-log-uri", v => Config.RabbitMQLogUri = v),
new("bureaus-external/shared/jwt-secret", v => Config.JwtSecret = v)
}
);
var app = builder.Build();
app.Run();
2️⃣ Exemplo de Config personalizado
public static class Config
{
public static string RabbitMQLogUri { get; set; } = string.Empty;
public static string JwtSecret { get; set; } = string.Empty;
}
3️⃣ Como funciona internamente
Ao iniciar a aplicação, o ConsulServices busca as chaves do Consul e armazena no cache.
O ConsulCacheUpdaterService roda em background e atualiza os valores periodicamente.
O Action<string> registrado em configSetters é chamado automaticamente sempre que um valor é atualizado.
🧩 Dependências
Pacote Versão Descrição Consul 1.6.10.8 Cliente oficial do Consul Microsoft.Extensions.Caching.Memory 8.0.1 Cache interno Microsoft.Extensions.Hosting 8.0.0 Suporte a background services Newtonsoft.Json 13.0.3 Serialização e desserialização JSON
🧱 Estrutura interna
Shared.ConsulConfig/
├── ConsulServices.cs → Comunicação com o Consul e cache
├── ConsulCacheUpdaterService.cs → Atualização periódica das variáveis
├── ConsulConfigExtensions.cs → Extensão para IServiceCollection
├── ConsulKVResponse.cs → Model do retorno do Consul
└── Shared.ConsulConfig.csproj → Arquivo de build e metadados do pacote
🧰 Exemplos de uso prático
Exemplo 1 — API com atualização automática de segredos
Ideal para APIs que dependem de secrets no Consul, como JWT, URLs de serviços ou conexões com bancos de dados.
Exemplo 2 — Aplicação distribuída
Permite que múltiplas aplicações (em diferentes servidores) compartilhem as mesmas variáveis via Consul e atualizem automaticamente sem restart.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Consul (>= 1.6.10.8)
- Microsoft.Extensions.Caching.Memory (>= 8.0.1)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Hosting (>= 8.0.0)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 1.1.0 | 293 | 10/21/2025 |