问题标签 [spring-cloud-gcp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
384 浏览

java - 即使在确认后,应用程序也接受来自 google Pub/Sub 的重复消息

当我在 GCP 环境中测试应用程序时,我遇到了非常奇怪的浮动 bug()。我找不到具体的重现步骤,但它确实不时发生。

我看到该消息已成功确认:

我有以下代码要确认:

我还看到以下日志:

并且不断重复。此外,我在订阅图中看到消息仍然存在(在确认回调调用之后)

丢弃逻辑:

我不知道如何解决它。有任何想法吗?

0 投票
2 回答
983 浏览

java - 确认后一次又一次收到来自Google Pub / Sub订阅的消息[Heisenbug]

我想注意到我将描述的场景很少发生,并且在大多数情况下,一切都按预期工作。

我在 Pub/Sub 端有 1 个主题和 1 个订阅。

我的 java 应用程序侦听订阅,进行一些处理并发送回确认。由于 google Pub/Sub 保证至少一次交付,我们根据objectGeneration标头和“objectId”标头在我们这边进行消息重复数据删除。

有时我们会看到我们的应用程序一次又一次地接受已确认的消息,这是意想不到的行为。

日志示例:

确认代码:

GCP订阅页面包含下图:

在此处输入图像描述

StackDriver 确认图: 在此处输入图像描述

任何想法发生了什么,如何解决和修复它?

0 投票
1 回答
40 浏览

java - 如何实现集群中的每个节点都接受来自 Google 发布/订阅主题的消息?

我有集群应用程序,它监听来自 tge 订阅的消息

所以我有 1 个主题和 1 个订阅。以下模式用作负载平衡器,因此集群中的每个节点都接受唯一的消息。像这样

生产者生产A, B, C, D,E

假设集群包含 2 个节点。可能的情况是node_1接受ADnode_2接受BCabdE

如果我知道集群中有多少个节点,我可以为每个节点创建订阅。它将允许监听每个集群节点上的每条消息。但是,如果我的节点数不时变化怎么办?(它可能会增加或减少)。我怎样才能在集群的每个节点上接受来自发布者的每条消息?

0 投票
2 回答
1072 浏览

java - 有没有办法从谷歌云 sql 中使用 pg_cron?

目前我需要将我的数据库从 postgreSql 移动到 google cloud sql。我使用 pg_cron 删除过时的记录,如下所示:

我已阅读以下文章:https ://cloud.google.com/sql/docs/postgres/extensions

并且没有找到任何与 pg_cron 相关的东西

我还阅读过Cloud SQL Postgres 是否有类似 cron 的工具?但它看起来像我的任务过度设计。

有没有更简单的方法?

0 投票
1 回答
605 浏览

java - 连接spring boot应用程序和google Cloud SQL的推荐方式是什么?

当我阅读谷歌文档时,我看到推荐的方法是使用云 sql 代理:

要使用公共 IP 地址从 Google Kubernetes Engine 安全地连接到 Cloud SQL,您必须使用 Cloud SQL 代理。

从另一面看,当我阅读spring 文档时,我看到了以下实现方式:

添加依赖:

并指定属性:

我尝试了弹簧方式并且它有效,但我不确定它是否是推荐的方式,因为谷歌文档。你能澄清一下吗?

附言

当我在cloudSQL端从公共IP切换到私有IP时,Spring Boot方法停止工作,我不知道如何恢复它?

0 投票
1 回答
96 浏览

spring - IntegrationMBeanExporter.stopActiveComponents() 与 gcp pub/sub 生产者一起抛出大量 InterruptedExceptions

我们有以下(简化的)流程:

-> 入站 FILE API 从远程服务器读取文件,带有固定轮询器

-> 分离器,通过直接通道连接

-> GCP pub/sub producer,从 splitter 中一一读取消息并发布到 GCP pubsub topic

现在,由于我们正在处理的文件可能非常大,我们尝试用它IntegrationMBeanExporter.stopActiveComponents()来优雅地关闭流,我们可以停止轮询新消息但仍然处理我们现在正在处理的消息。这样,当我们需要关闭运行流时,例如由于新部署,我们可以避免数据丢失。

现在,一旦我们使用 JMX 调用该方法,我们的轮询器就会正确关闭,而不会影响任何正在进行的消息,所有正在进行的消息实际上都正确发送到 pub/sub,但是我们开始 PubSubMessageHandler从由此创建的 Future 获取 InterruptedExceptions线:

https://github.com/spring-cloud/spring-cloud-gcp/blob/a706b9bc9937652e824c70cdd3a6a865b43cbf46/spring-cloud-gcp-pubsub/src/main/java/org/springframework/cloud/gcp/pubsub/integration/outbound/ PubSubMessageHandler.java#L202

一旦我们调用stopActiveComponents.

(这实际上用于在第一个 InterruptedException 发生时停止整个流(流仅通过直接通道连接),因为这个异常被传播回轮询器并且所有后续消息都丢失了。我们通过使用网关组件PubSubMessageHandler和重定向解决了这个问题所有错误都分离错误通道。-有人可能会觉得这很有用)

有人可以帮助为什么会发生这种情况以及如何摆脱它?我试图将我自己的发布者线程池挂接到PubSubMessageHandler

,但没有任何结果。我猜是因为 PubSubMessageHandler 在内部将谷歌期货映射到弹簧SettableListenableFuture

堆栈跟踪

0 投票
0 回答
326 浏览

spring-cloud-sleuth - 超时异常后没有报告进一步的跟踪

我将带有 GCP 支持的 spring-cloud-sleuth 集成到应用程序中。在负载下,应用程序突然停止报告任何跨度,直到重新启动。

我能看到的唯一跟踪相关日志是以下异常:

此异常在跟踪结束时发生了几次,然后再也不会发生(好像某些东西永久中断)

我读到一个 spring-cloud-gcp 问题(见这里),这可能与少数执行线程有关,所以我已经将线程数配置为 8(从 4)。

0 投票
2 回答
2042 浏览

spring-boot - Spring + google cloud:没有可用的“com.google.cloud.storage.Storage”类型的合格bean

我正在尝试将 spring 库用于谷歌云 API:

spring-cloud-gcp-starter-vision

但是 Spring Application Context 无法加载并出现错误:

原因:org.springframework.beans.factory.UnsatisfiedDependencyException:在类路径资源[org/springframework/cloud/gcp/autoconfigure/vision/CloudVisionAutoConfiguration$VisionOcrConfiguration.class]中定义的名称为'documentOcrTemplate'的bean创建错误:不满足的依赖关系通过方法'documentOcrTemplate'参数1;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.google.cloud.storage.Storage”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注释:{}...

我不确定如何处理它,因为它都是谷歌的代码,在我自己的代码中没有。

仅供参考,这是我尝试使用此库的方式:

0 投票
4 回答
21971 浏览

google-cloud-platform - Google Cloud Spanner 和 Cloud SQL 有什么区别?

我是 GCP 堆栈的新手,所以我对用于存储数据的大量 GCP 技术感到非常困惑:

https://cloud.google.com/products/storage

虽然上面的文章中没有提到谷歌云扳手,但我知道它存在并且它用于数据存储:https ://cloud.google.com/spanner

从我目前的观点来看,我没有看到云 sql(引擎盖下带有 postgres)和云扳手之间有任何显着差异。我发现它的语法有点不同,但是当我应该更喜欢这种技术而不是 spring cloud sql 时,它没有回答。

你能解释一下吗?

附言

我认为 spring cloud sql 是一个传统的数据库,由谷歌管理,具有自动复制和水平可扩展性。

0 投票
1 回答
293 浏览

spring-cloud-gcp - 获取文档中的所有集合

我在firebase数据中有以下结构

订单 -> OrderID -> LocationHistory -> LocationHistoryID -> FieldsData

Orders 和 LocationHistory 是常量,而 OrderID ,LocationHistoryID 是文档 ID

我想知道是否可以生成一个查询以获取存储库中订单的所有 LocationHistory,该存储库扩展 FirestoreReactiveRepository,它应该是 /Orders/10002/LocationHistory/

Belwo 是我目前使用的代码