每当在 Google Cloud SQL 中插入或更新数据时,是不是可以向 Google Pub/Sub 发布消息?
Posted
技术标签:
【中文标题】每当在 Google Cloud SQL 中插入或更新数据时,是不是可以向 Google Pub/Sub 发布消息?【英文标题】:Is it possible to publish a message to Google Pub/Sub whenever a data is inserted or updated in Google Cloud SQL?每当在 Google Cloud SQL 中插入或更新数据时,是否可以向 Google Pub/Sub 发布消息? 【发布时间】:2020-12-20 03:17:03 【问题描述】:我是 Google Cloud SQL 和 Pub/Sub 的新手。我在任何地方都找不到有关此的文档。但是另一个问题被接受和赞成answer 似乎说只要数据库发生插入,就可以发布 Pub/Sub 消息。摘自该答案:
2 - 理想的解决方案是创建 Pub/Sub 主题并在您将新数据插入数据库时发布到该主题。
但由于我的问题是另一个问题,因此我在这里提出了一个新问题。
背景:我将 Google Cloud SQL、Firestore 和实时数据库组合用于我的应用程序,因为它具有自己的独特优势。
一旦在 Google Cloud SQL 中成功插入,我想做的是能够写入 Firestore 和实时数据库。根据上面的答案,这是我应该做的步骤:
-
应用调用云函数将数据插入 Google Cloud SQL 数据库 (PostgreSQL)。 注意:Postgres 表有一些重要的约束并触发 Postgres 函数,这就是我们要从这里开始的原因。
插入成功后,我希望 Google Cloud SQL 将消息发布到 Pub/Sub。
然后有另一个 Cloud Function 订阅了 Pub/Sub 主题。此函数将相应地写入 Firestore / 实时数据库。
我已经弄清楚了第 1 步和第 3 步。我正在寻找的解决方案是第 2 步。
【问题讨论】:
【参考方案1】:另一个问题的答案只是建议您的代码执行以下两项操作:
-
写入 Cloud SQL。
如果写入成功,则向 pubsub 主题发送消息。
没有任何东西可以自动化或简化这些任务。 Cloud Functions 没有响应写入 Cloud SQL 的触发器。您为任务 1 编写代码,然后为任务 2 编写代码。这两件事都应该简单明了,并在产品文档中涵盖。我建议(分别)尝试两者,并使用您拥有的代码再次发布,该代码无法按您预期的方式工作。
如果您需要开始使用 pubsub,几乎每个主要服务器平台都有 SDK,发送消息的文档是 here。
【讨论】:
感谢道格的回答。所以谷歌云 SQL 没有办法向 Pub/Sub 发送消息吗? 不,这不是 Cloud SQL 的能力。 documentation 表示“服务器级触发器”不可用。以上是关于每当在 Google Cloud SQL 中插入或更新数据时,是不是可以向 Google Pub/Sub 发布消息?的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Sql 二代 Utf8Mb4 编码
无法在 Spring Data Cloud Spanner 中将 java.sql.Timestamp 转换为 com.google.cloud.Timestamp
从 Google Cloud Run 服务中的 docker 容器到 Google Cloud SQL 的请求最多需要 2 分钟