我有一个Google PubSub流,每天都添加了一组地址。我希望每个这些地址都由触发的Google Cloud Function处理。但是,我看到的是,即使每天都有新消息添加到流中,每个地址也只处理一次。
我的问题是,如果每天将相同的值添加到流中,它将作为新消息处理吗?还是将其视为重复消息?
这是我所看到的情况。每天都会触发locations
云功能,并将每个位置发布到locations
主题。在大多数情况下,这些消息与前一天的消息相同。它们唯一的更改是某个位置关闭或添加了新位置。但是,我看到的是locations
Cloud Function从未收到许多location_metrics
消息。
函数流程如下:
每天在2a触发主题(称为locations_trigger
)>触发器locations
云功能>发送至locations
主题>触发器location_metrics
云功能>发送至{{ 1}}主题
对于location_metrics
云功能,将触发它并正确返回所有地址,然后将其发送到locations
主题。我不会将整个功能放在这里,因为它没有问题。对于它检索到的每个位置,日志中都会显示“发布成功”消息。这是将位置详细信息发送给主题的部分。
locations
发送的示例 project_id = "project_id"
topic_name = "locations"
topic_id = "projects/project_id/topics/locations"
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project_id, topic_name)
try:
publisher.publish(topic_path, data=location_details.encode('utf-8'))
print("publish successful: ", location)
except Exception as exc:
print(exc)
有效负载是:
location
{"id": "accounts/123456/locations/123456", "name": "Business 123 Main St Somewhere NM 10010"}
函数如下所示:
location_metrics