我们有超过 100 多个 .net API,其配置是从 gitlab 配置中获取的。每当有人更新配置时,我们都会同步镜像并重新启动服务。
我们有一个要求,在不重新启动的情况下,我们希望实现一些通过启动事件我们可以更新所有/选定服务的配置的东西。某种观察者模式,但处于服务级别。任何想法如何通过进行最少的代码更改来实现这一点。
我们有一个通用的 nuget 包,我们可以在其中进行更改,供所有 100 多个 API 使用。
您可以实施 Webhook 或 HTTP 回调,其中集中式配置管理系统通过向预定义端点发送 HTTP 请求来通知您的 API 有关配置更改的信息。收到此类请求后,API 可以触发刷新过程。
[ApiController]
[Route("webhook/config")]
public class WebhookController : ControllerBase
{
[HttpPost]
public IActionResult HandleConfigUpdate([FromBody] ConfigUpdatePayload payload)
{
// Process the configuration update payload
// Refresh configuration in the API
// You might trigger a configuration refresh event or directly update configuration here
return Ok();
}
}
public class ConfigUpdatePayload
{
// Define properties based on the payload structure expected from the configuration management system
// For example, it could include information about the updated configuration
}