如何使用SpringCloud Bus和Webhooks自动重新加载配置属性

简述

SpringCloud Bus使用轻量级消息代理将分布式系统的节点连接起来。然后可以使用此代理广播状态更改(例如配置更改)或其他管理指令。目前,SpringCloud Bus仅支持Kafka,RabbitMQ等AMQP代理作为传输。

项目配置

我们可以使用Kafka或RabbitMQ作为Spring Cloud Bus的AMQP代理。如果您使用RabbitMQ,则需要在配置服务器的内部版本中包含SpringCloud Stream RabbitMQ依赖项:

另外,如果使用Kafka,则需要以下SpringCloud Stream Kafka依赖项:

如果git存储库(config-server)中的配置属性已更新,则需要将更改推送到所有服务。

配置更改刷新过程原理描述

1.在配置Git存储库上创建一个Webhook,以通知Config Server对Git存储库的任何更改(例如任何推送)。 许多Git实现都支持Webhooks,包括GitHub,GitLab,Bitbucket和Gogs。
2.Config Server通过消息代理(例如RabbitMQ或Kafka)广播有关更改的消息来响应webhook POST请求。
3.订阅通知的各个Config Server客户端应用程序通过使用Config Server中的新属性值刷新其环境来响应通知消息。

创建webhook

我们可以创建一个Webhook并提供有效载荷URL,以便任何对存储库的推送都将调用提供的URL。

就是这个步骤repository settings -> webhooks -> Add webhook来创建webhook

Config Server将能够在/monitor路径下处理Webhook请求。 因此,应使用引用Config Server上/monitor端点的URL来设置有效负载URL字段。

如果设置,则Secret字段将在Webhook POST请求中包含一个名为X-Hub-Signature的标头,其中包含具有给定密钥的HMAC-SHA256摘要(对于GitHub为HMAC-SHA1)。 目前,Config Server的/monitor端点无法识别签名标头,因此可以暂且将此字段保留为空白。

在Config Server中处理Webhook更新

在配置服务器中启用/monitor端点很简单,只需在配置服务器的版本中添加spring-cloud-config-monitor依赖项即可。

在Maven pom.xml文件中,引入该依赖后,将启动自动配置以启用/monitor终结点。

但是monitor依赖关系将仅监视更改,我们需要把所有的更改推送出去。

Spring Cloud Stream是Spring Cloud项目中的另一个项目; 它允许创建通过某些基础绑定机制(RabbitMQ或Kafka)进行通信。

/monitor端点使用Spring Cloud Stream将通知消息发布到参与的Config Server客户端。为了避免被硬编码到任何特定的消息传递实现中,监视器充当Spring Cloud Stream源,将消息发布到流中,并让底层的绑定机制处理发送消息的细节。

在配置服务器中指定RabbitMQ属性

在配置服务器客户端中启用自动刷新

为了在客户端应用程序中启用自动属性刷新,我们需要添加与Spring Config服务器相同的Spring Cloud AMQP依赖关系,并需要在配置服务器客户端中提供AMQP详细信息,以便配置服务器将推送事件进行交换,客户端将进行订阅这些事件,并在每个客户端上调用刷新。

总结

本篇文章介绍了如何使用Spring Cloud Bus和Webhooks自动重新加载配置属性。

0

发表评论

邮箱地址不会被公开。