使用 Webhook 订阅事件

Webhook 使用流程

第一步:在 EventMesh 配置 Webhook 相关信息并且启动

配置说明:

  1. # Webhook HTTP payload 监听端口
  2. eventMesh.server.http.port=10105
  3. # Webhook 配置管理端口
  4. eventMesh.server.admin.http.port=10106
  5. # 是否启动 Webhook admin 服务
  6. eventMesh.webHook.admin.start=true
  7. # Webhook 事件配置存储模式。目前只支持 file 与 nacos
  8. eventMesh.webHook.operationMode=file
  9. # 文件存储模式的文件存放路径,如果写上#{eventMeshHome},在 eventMesh 根目录
  10. eventMesh.webHook.fileMode.filePath= #{eventMeshHome}/webhook
  11. # nacos 存储模式,配置命名规则是 eventMesh.webHook.nacosMode.{nacos 原生配置 key} 具体的配置请看 [nacos github api](https://github.com/alibaba/nacos/blob/develop/api/src/main/java/com/alibaba/nacos/api/SystemPropertyKeyConst.java)
  12. ## nacos 的地址
  13. eventMesh.webHook.nacosMode.serverAddr=127.0.0.1:8848
  14. # Webhook CloudEvent 发送模式。与 eventMesh.connector.plugin.type 配置一样
  15. eventMesh.webHook.producer.connector=standalone

第二步:添加 Webhook 配置信息

配置信息说明:

  1. /**
  2. * 厂商发送事件时调用的地址。[http or https]://[domain or IP]:[port]/webhook/[callbackPath]
  3. * 在厂商的 Webhook 配置中需要填写完整 url,比如:http://127.0.0.1:10105/webhook/test/event
  4. * callbackPath 唯一
  5. * manufacturer callback path
  6. */
  7. private String callbackPath;
  8. /**
  9. * 厂商的名字
  10. * manufacturer name ,like github
  11. */
  12. private String manufacturerName;
  13. /**
  14. * 厂商的域名
  15. * manufacturer domain name, like www.github.com
  16. */
  17. private String manufacturerDomain;
  18. /**
  19. * 厂商的事件名
  20. * Webhook event name ,like rep-push
  21. */
  22. private String manufacturerEventName;
  23. /**
  24. *
  25. * http header content type
  26. */
  27. private String contentType = "application/json";
  28. /**
  29. * 说明
  30. * description of this WebHookConfig
  31. */
  32. private String description;
  33. /**
  34. * 有一些厂商使用验签方式,
  35. * secret key ,for authentication
  36. */
  37. private String secret;
  38. /**
  39. * 有一些厂商使用验签方式,使用账户密码方式
  40. * userName ,for HTTP authentication
  41. */
  42. private String userName;
  43. /**
  44. * 有一些厂商使用验签方式,使用账户密码方式
  45. * password ,for HTTP authentication
  46. */
  47. private String password;
  48. /**
  49. * 事件发送到那个 topic
  50. * roll out event name ,like topic to mq
  51. */
  52. private String cloudEventName;
  53. /**
  54. * roll out data format -> CloudEvent serialization mode
  55. * If HTTP protocol is used, the request header contentType needs to be marked
  56. */
  57. private String dataContentType = "application/json";
  58. /**
  59. * cloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id)
  60. * id of cloudEvent ,like uuid/manufacturerEventId
  61. */
  62. private String cloudEventIdGenerateMode;

添加接口

路径: /webhook/insertWebHookConfig

方法:POST

contentType: application/json

输入参数:

字段说明类型必须默认值
callbackPath调用地址,唯一地址stringnull
manufacturerName厂商名stringnull
manufacturerDomain厂商的域名stringnull
manufacturerEventName厂商事件名stringnull
contentTypehttp connettypestringapplication/json
description配置说明stringnull
secret验签密钥stringnull
userName用户名stringnull
password用户密码stringnull
cloudEventName事件名stringnull
cloudEventIdGenerateModecloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id)stringmanufacturerEventId

例子:

  1. {
  2. "callbackPath":"/webhook/github/eventmesh/all",
  3. "manufacturerName":"github",
  4. "manufacturerDomain":"www.github.com",
  5. "manufacturerEventName":"all",
  6. "cloudEventName":"github-eventmesh",
  7. "secret": "testSecret"
  8. }

输出参数:1 成功,0 失败

通过 callbackPath 查询 WebHookConfig

路径: /webhook/queryWebHookConfigById

方法:POST

contentType: application/json

输入参数: | 字段 | 说明 | 类型 | 必须 | 默认值 | | — | — | — | — | — | | callbackPath | 调用地址,唯一地址 | string | 是 | null | | manufacturerName | 调用地址的提供方 | string | 是 | null |

例子:

  1. {
  2. "callbackPath":"/webhook/github/eventmesh/all",
  3. "manufacturerName":"github"
  4. }

输出参数:

字段说明类型必须默认值
callbackPath调用地址,唯一地址stringnull
manufacturerName厂商名stringnull
manufacturerDomain厂商的域名stringnull
manufacturerEventName厂商事件名stringnull
contentTypehttp connettypestringapplication/json
description配置说明stringnull
secret验签密钥stringnull
userName用户名stringnull
password用户密码stringnull
cloudEventName事件名()stringnull
cloudEventIdGenerateModecloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id)stringmanufacturerEventId

通过 manufacturer 查询 WebHookConfig 列表

路径: /webhook/queryWebHookConfigByManufacturer

方法:POST

contentType: application/json

输入参数:

字段说明类型必须默认值
manufacturerName厂商名stringnull
pageNum分页查询中的页数stringnull
pageSize每一页的结果数量stringnull

例子:

  1. {
  2. "manufacturerName":"github",
  3. "pageNum":1,
  4. "pageSize":2
  5. }

输出参数:

字段说明类型必须默认值
callbackPath调用地址,唯一地址stringnull
manufacturerName厂商名stringnull
manufacturerDomain厂商的域名stringnull
manufacturerEventName厂商事件名stringnull
contentTypehttp connettypestringapplication/json
description配置说明stringnull
secret验签密钥stringnull
userName用户名stringnull
password用户密码stringnull
cloudEventName事件名()stringnull
cloudEventIdGenerateModecloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id)stringmanufacturerEventId

更新接口

路径: /webhook/updateWebHookConfig

方法:POST

contentType: application/json

输入参数:

字段说明类型必须默认值
callbackPath调用地址,唯一地址stringnull
manufacturerName厂商名stringnull
manufacturerDomain厂商的域名stringnull
manufacturerEventName厂商事件名stringnull
contentTypehttp connettypestringapplication/json
description配置说明stringnull
secret验签密钥stringnull
userName用户名stringnull
password用户密码stringnull
cloudEventName事件名stringnull
cloudEventIdGenerateModecloudEvent 事件对象唯一标识符识别方式,uuid 或者 manufacturerEventId(厂商 id)stringmanufacturerEventId

例子:

  1. {
  2. "callbackPath":"/webhook/github/eventmesh/all",
  3. "manufacturerName":"github",
  4. "manufacturerDomain":"www.github.com",
  5. "manufacturerEventName":"all",
  6. "cloudEventName":"github-eventmesh",
  7. "secret": "testSecret"
  8. }

输出参数:1 成功,0 失败

删除接口

路径: /webhook/deleteWebHookConfig

方法:POST

contentType: application/json

输入参数:

字段说明类型必须默认值
callbackPath调用地址,唯一地址stringnull
manufacturerName调用地址的提供方stringnull

例子:

  1. {
  2. "callbackPath":"/webhook/github/eventmesh/all",
  3. "manufacturerName":"github"
  4. }

输出参数:1 成功,0 失败

第三步:查看配置是否成功

  1. file 存储模式。请到 eventMesh.webHook.fileMode.filePath 目录下查看。文件名为/转换为.的 callbackPath。
  2. nacos 存储模式。请到 eventMesh.webHook.nacosMode.serverAddr 配置的 nacos 服务中查看。

第四步:配置 cloudevent 的消费者

第五步:在厂商配置 Webhook 相关信息

厂商操作请看 厂商 Webhook 操作说明

厂商 Webhook 操作说明

github 注册

第一步:进入对应的项目

第二步:点击 setting

使用 Webhook 订阅事件 - 图1

第三步:点击 Webhooks

使用 Webhook 订阅事件 - 图2

第四步:点击 Add webhook

使用 Webhook 订阅事件 - 图3

第五步:填写 webhook 信息

使用 Webhook 订阅事件 - 图4

Payload URL: EventMesh 服务地址和调用地址,需包含协议头。例如,当调用地址 callbackPath/webhook/github/eventmesh/all 时,Payload URL 为 http://www.example.com:10105/webhook/github/eventmesh/all

Content Type: http header content type

Secret: 验签字符串