我正在尝试将数据(有效负载)从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集成,我不会感到惊讶。另外,如果问题不清楚,请告诉我。那样的话,我会用另一种方式来澄清我的问题。
谢谢
1条答案
按热度按时间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
并替换:具有
让我知道这是否有帮助或如果你有任何其他问题。