如何配置post-webhook从bitbucket到kafka rest代理?

v6ylcynt  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(448)

我正在尝试将数据(有效负载)从bitbucket发布到我的kafka示例,以防发生任何bitbucket事件(如 Pushed , Forked , PR creating , Addition / Modification / Deletion 公关评论等)
所以,我已经设置了kafka rest代理,但是我不能将数据从bitbucket发送到kafka作为代理 Content-Type 使用kafka rest代理发布数据是必需的 application/vnd.kafka.json.v2+json bitbucket的有效负载的头设置为 application/json (我使用的是在 Repository 水平)。
我在存储库级别对webhook进行了如下配置:

这是从bitbucket的webhook触发的请求:

我从Kafka的rest代理那里得到的回答是:

我考虑过以下解决方案:
我可以编写一个简单的web服务器,作为两个系统(bitbucket和kafka)之间的中介。服务器可以充当中间代理,从bitbucket的webhook获取传入请求并将其发布到服务器 Kafka REST proxy 使用适当的标题( application/vnd.kafka.json.v2+json ).
这个解决方案可行,但缺点是维护另一台服务器(由我编写)。此外,由于bitbucket开始频繁触发webhooks(高峰时间每秒触发100次,因为我们只有一个bitbucket示例,而且我们有大约3500名开发人员),因此它的可伸缩性也会出现问题。
我可以使用bitbucket插件作为 webhook 它允许我动态地配置和更改标题。这就是我正在努力实现的解决方案。也不需要维护额外的服务器。
有没有一个bitbucket插件,我可以从市场上安装,它可以让我在触发webhook时配置头文件?
p、 很抱歉写了这么长的问题。这两个解决方案是我从头开始的。如果有更好的解决方案将bitbucket与kafka集成,我不会感到惊讶。另外,如果问题不清楚,请告诉我。那样的话,我会用另一种方式来澄清我的问题。
谢谢

snz8szmq

snz8szmq1#

可以使用pipedream接受来自bitbucket的webhook请求,修改 Content-Type 标题至 application/vnd.kafka.json.v2+json ,并将请求转发给您的kafka rest代理。在pipedream上运行这样的管道是免费的。
我创建了一个示例管道,向您展示了它是如何工作的。它接受从bitbucket发送的http负载- $event.body -并使用一点node.js代码将请求转发到另一个http端点。
在我的例子中,我刚刚添加了一个requestbin url,这样你就可以看到主体和头被发布到某个地方-请查看我在这里发送的一个示例请求。展开该请求的headers部分并注意 Content-Type 标题正确设置为 application/vnd.kafka.json.v2+json .
如果您在上面分叉管道(只需单击右上角的分叉按钮),它将生成一个特定于管道的自定义url。将该url添加为绑定到repo的新bitbucketwebhook url,您应该开始看到新的事件发生。
这假设您的kafka rest代理url是可公开访问的。pipedream管道的所有代码都是公共的,因此如果您想使kafka rest代理端点保持私有,可以创建一个环境变量并在node.js代码中引用该环境变量,用该环境变量的值替换requestbin url。
例如,我可以创建一个名为 KAFKA_REST_ENDPOINT 并替换:

url: 'https://entygbild98b.x.pipedream.net'

具有

url: process.env.KAFKA_REST_ENDPOINT

让我知道这是否有帮助或如果你有任何其他问题。

相关问题