webhook 可以直接针对 GCP PubSub 吗?

我们正在使用 webhooks 来监听 Jira 问题事件。每当票证上发生活动时,JIRA API 都会通知在 Google Cloud Function 中运行的 HTTP 端点。在此 Cloud Functions 中,我们只是通过以下方式将请求原封不动地转发到 Pub/Sub:


def forward_to_pubsub(request):


    publisher = pubsub_v1.PublisherClient()

    topic_path = publisher.topic_path(project_id, topic_id)


    # Request body contains user, project, issue basically everything we care about

    jira_body = request.json

    publisher.publish(topic_path, data=json.dumps(jira_body).encode('utf-8'))

这似乎是一个不必要的跳跃。有没有办法将 Pub/Sub 配置为 HTTP webhook 的目标?无法从文档中找出任何一种方式。


qq_遁去的一_1
浏览 157回答 2
2回答

偶然的你

实际上可以使用 REST API 通过 HTTP 直接将消息发布到 Pub/Sub 主题。要发布消息,请发送如下 POST 请求:POST  https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID:publish Authorization: Bearer $(gcloud auth application-default print-access-token)替换以下内容:PROJECT_ID:主题项目的项目IDTOPIC_ID:主题ID在请求正文中指定以下字段:{"messages": [  {    "attributes": {      "KEY": "VALUE",      ...    },    "data": MESSAGE_DATA,  }]}替换以下内容:KEY:消息属性的键VALUE:消息属性的键的值MESSAGE_DATA:带有消息数据的 base64 编码字符串如果请求成功,响应是一个带有消息 ID 的 JSON 对象。以下示例是带有消息 ID 的响应:{  "messageIds": [     "19916711285"   ] }发布消息后,Pub/Sub 服务会将消息 ID 返回给发布者。还有一个REST API 参考和服务端点概述以及使用 Google REST API 时的常见说明,这应该会有所帮助。请注意,发布请求必须确认 projects.topic.publish方法规范,因此仍需要从 JIRA webhook 通知进行转换。

呼啦一阵风

不,这是不可能的。Pub/Sub 主题没有相应的可用作 webhook 的 HTTP 端点。如果要从最终用户应用程序触发 Pub/Sub 主题,则需要在它们之间使用前端服务器:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python