Google Pub/Sub - 将消息发布到主题后,未从本地函数中找到事件数据

Posted

技术标签:

【中文标题】Google Pub/Sub - 将消息发布到主题后,未从本地函数中找到事件数据【英文标题】:Google Pub/Sub - No event data found from local function after published message to topic 【发布时间】:2021-06-04 12:20:06 【问题描述】:

我正在使用Functions Framework with Python 和Google Cloud Pub/Sub Emulator。我遇到了从已发布消息到主题的事件触发的问题,在该主题中找不到该函数的事件数据。请参阅下面的更多详细信息。

http://localhost:8085 下启动Pub/Sub Emulator,project_id 为local-test。 具有签名类型的旋转功能:httphttp://localhost:8006 下。 给定一个签名类型的后台云函数:event
    Topic is created 为 test-topic 函数在http://localhost:8007 下启动。 Create push subscription test-subscription 用于test-topic 用于端点:http://localhost:8007

当我通过 Postman 中的 POST 请求从 http://localhost:8006test-topic 发布消息时,我收到 200 响应以确认消息已成功发布。代表http://localhost:8007 的函数将作为event 执行,如函数框架的日志中所示。但是在调试触发函数时,没有event的实际数据。

有人遇到过吗?对此有何想法/建议?也许,这是真的吗? #23 Functions Framework does not work with the Pub/Sub emulator

已安装的模块

functions-framework==2.1.1 google-cloud-pubsub==2.2.0

python版本

3.8.8

【问题讨论】:

【参考方案1】:

我将关闭这篇文章,因为问题是去年报告的实际 bug。 更新:作为解决此错误之前的解决方法,我将下面的 code 本地复制到 functions_framework/__init__.py 内的 view_func 嵌套函数内,在 _event_view_func_wrapper 函数内。

if 'message' in event_data:
    if 'data' not in event_data:
        message = event_data['message']
        event_data['data'] = 
            'data': message.get('data'),
            'attributes': message.get('attributes')
        

【讨论】:

以上是关于Google Pub/Sub - 将消息发布到主题后,未从本地函数中找到事件数据的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Pub/Sub - 捕获发送到死信主题的消息的消息传递失败原因[关闭]

google cloud pub sub中两个主题之间的消息传输

gcp 云函数 pub/sub 主题死信

如何通过转发到死信主题来限制 Google Pub/Sub 交付尝试?

如何从前端移动客户端发布到 Google Pub/Sub?

将 IAM 策略绑定添加到 Google Pub/Sub 主题需要啥角色?