Infraestrutura modular com Consul (cache TTL), Logging compartilhado, Alertas e utilidades para .NET.
$ dotnet add package Shared.Infra.CoreLeitura sob demanda do Consul KV com cache em memória.
Sem updater, sem setters: ao chamar GetKeyAsync, lê do cache; se ausente/expirado, busca no Consul, salva com TTL e retorna.
// Startup/Program
services.AddConsulConfiguration(
consulUrl: "http://consul:8500/v1/kv", // precisa incluir /v1/kv
consulToken: Environment.GetEnvironmentVariable("CONSUL_TOKEN"),
cacheDuration: TimeSpan.FromMinutes(5) // TTL do cache
);
var consul = provider.GetRequiredService<IConsulService>();
// Retorna string ou null (se chave não existir)
var valor = await consul.GetKeyAsync("meu/sistema/base-url", ct);
// Em chamadas subsequentes dentro do TTL, retorna do cache.
// Após expirar, reconsulta o Consul e renova o TTL.
cacheDuration).null.null.IMemoryCache (concorrente) para armazenar as chaves.Microsoft.Extensions.Caching.Memory e IHttpClientFactory.consulUrl apontando para o endpoint KV (ex.: http://host:8500/v1/kv).CONSUL_TOKEN para Consul protegido por ACL.