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
。
具有签名类型的旋转功能:http
在http://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:8006
向 test-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.0python版本
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中两个主题之间的消息传输