Webhook集成 #
Webhook集成用于码如云将一些重要的业务事件(比如实例创建和表单提交等)通过HTTP的方式推送到客户自身的软件系统。
启用Webhook集成 #
要启用Webhook集成功能,需要先配置好Webhook的接收URL,再选择需要推送Webhook的事件类型。
在应用管理页面,点击某应用右侧的更多
按钮,再点击Webhook集成
,可弹出Webhook集成配置对话框。
其中:
URL
:表示需要接收Webhook的URL地址,对应客户自身IT系统的一个HTTP接收端口用户名
:HTTP基本认证的用户名密码
:HTTP基本认证的密码
码如云在推送Webhook数据时,会使用客户设置用户名
和密码
向URL
发起HTTP请求,请求统一采用HTTP的POST方法,并使用JSON数据格式。
每个应用可以有不同的Webhook配置,这意味着每个应用可以有不同的接收URL,进而也意味着各个应用的Webhook接收模块可以独立开发和独立部署。
在配置好Webhook集成后,还不能立即接收到Webhook事件,还应选择需要推送的Webhook事件类型。Webhook事件类型主要包含两大类,一类是针对实例的事件,在应用设置页面中进行设置,如下图。
另一类是针对提交的事件,在页面设置中进行设置,如下图。
接收Webhook #
除了完成Webhook设置,客户的IT人员还需要自行实现URL
背后的数据接收代码。例如,对于Java生态,可以使用Spring MVC框架的@RestController。
由于网络传输时间的不确定性,码如云无法保证Webhook事件到达的顺序。
Webhook推送有可能失败,比如网络不可达或者客户端系统返回了非2xx的HTTP状态码,为此码如云实现了重试机制,每次Webhook推送最多将重试3次,每次重试的时间间隔从500毫秒到2000毫秒不等。也正因如此,码如云有可能对同一个Webhook事件进行多次推送,此时客户方的IT系统需要自行处理幂等性问题,比如可以使处理逻辑本身即是幂等的,或者通过一个数据库表来记录已经处理过的Webhook事件进而用于消重。
在接收Webhook时,建议客户方采用异步方式,即当接收到Webhook事件后不做立即业务处理,而是直接将Webhook事件放到一个消息队列(比如Kafka或RabbitMQ等)中,然后立即向码如云返回。之后,由另一个后台组件从消息队列中读取Webhook事件逐一处理。这样的好处是一方面可以较低客户自身IT系统对码如云的耦合与依赖,另一方面可以提升双方系统的处理性能。
Webhook事件 #
当前码如云支持以下Webhook事件: