Flutter Cloud Pub Sub - 如何创建一个持续监听消息的 StreamingPull?

Posted

技术标签:

【中文标题】Flutter Cloud Pub Sub - 如何创建一个持续监听消息的 StreamingPull?【英文标题】:Flutter Cloud Pub Sub - How to create a StreamingPull that will continuously listen for messages? 【发布时间】:2021-09-16 10:38:30 【问题描述】:

我有一个向订阅者发布消息的 API。

在 Flutter 中,我有一个订阅者,每次发布消息时我都需要从 API 中提取消息。

 String subscriptionName = 'projects/test/subscriptions/test-sub';
    pubSubClient.projects.subscriptions
        .pull(
            PullRequest.fromJson(
              "maxMessages": 1000,
            ),
            subscriptionName)
        .then((pullResponse) 
      if (pullResponse.receivedMessages != null &&
          pullResponse.receivedMessages.isNotEmpty) 
        List<String> ids = [];
        pullResponse.receivedMessages.forEach((element) 
          ids.add(element.ackId);
        );
        pubSubClient.projects.subscriptions.acknowledge(
            AcknowledgeRequest.fromJson("ackIds": ids), subscriptionName);
      
    );

这可行,但只运行一次。在 Google Cloud API 中,它说使用 StreamingPull 来有效地接收消息?

如何在 Flutter 中做到这一点,还有哪些其他选择?

【问题讨论】:

您好,我也遇到了这个问题,请问您找到解决方案了吗? 很遗憾没有。我看到您也在 Github link 中发表了评论,我不得不更改实现。从 GitHub issue 中,开发人员表示无法完成,因为该包使用了 Pub Sub REST API。 【参考方案1】:

很遗憾,这是不可能的。

我决定更改实现而不使用 Pub-Sub。

谷歌开发者说

遗憾的是,您无法使用 REST API 执行“StreamingPull”——这就是它的本质。 ?

【讨论】:

以上是关于Flutter Cloud Pub Sub - 如何创建一个持续监听消息的 StreamingPull?的主要内容,如果未能解决你的问题,请参考以下文章

javascript Google Cloud函数用于在pub / sub和pub / sub到Big查询中发布数据

Google Cloud Pub/Sub - Cloud Function & Bigquery - 数据插入未发生

Firebase Cloud Functions 如何确认 Cloud pub/sub

如何将属性从 Cloud Scheduler 传递到 Pub/Sub?

使用 Pub/Sub 消息触发 Cloud Composer DAG

访问 Google Cloud Storage 触发事件“Pub/Sub”?