passcreator/jobqueue-googlepubsub

一个基于 Google Pub/Sub 的后端支持的 Flowpack.JobQueue.Common 实现

dev-master 2019-12-17 09:33 UTC

This package is not auto-updated.

Last update: 2024-09-21 14:08:40 UTC


README

这是一个基于 Flowpack.JobQueue.Common 包的作业队列后端,基于 Google Pub/Sub。如果您还不知道 Google Pub/Sub,可以查看他们的教程 这里。通常,使用这个包从 Pub/Sub 拉取消息。Pub/Sub 提供了 至少一次的消息投递。这意味着您的应用程序需要能够处理重复投递的消息。

免责声明:这个项目受到了 t3n 的 RabbitMQ 包的强烈启发!

设置

要使用 Google Pub/Sub 作为 JobQueue 的后端,您需要一个 Google Cloud Platform 项目和一个具有(至少)发布和拉取消息权限的服务帐户。此包能够创建主题(在 Pub/Sub 中用于队列的术语)和订阅者,但要这样做,服务帐户需要拥有 Pub/Sub 的管理权限。如果您不授予管理权限,您需要使用队列名称作为主题和订阅者的名称自行创建主题和订阅者。

使用 composer 安装包

composer require passcreator/jobqueue-googlepubsub

使用设置命令创建主题和相应的订阅者

./flow queue:setup myqeue

配置

目前配置选项相当基本。如果您需要更多,请随意创建 pull requests。请确保创建服务帐户并下载所描述的凭据 JSON 文件 这里。JSON 必须作为 base64 编码字符串传递到配置中。

作业队列的最简单配置可能如下所示

Flowpack:
  JobQueue:
    Common:
      queues:
        simple-queue:
          className: 'Passcreator\JobQueue\GooglePubSub\Queue\GooglePubSubQueue'
          executeIsolated: false
          
          options:
            
            serviceAccountConfiguration: 'base64-encoded-service-account-json'
            # specifying a prefix is optional and allows you to use the same GCP project/service-account
            # in multiple instances of your projects.
            queuePrefix: 'prefix_'
            # The number of seconds Pub/Sub waits for an acknowledgement of a message
            ackDeadline: 10
            allowedPersistenceRegions:
              - 'europe-west1'
              - 'europe-west2'

延迟消息

Google Pub/Sub 没有延迟消息投递的概念,这意味着一旦发布消息,它就会被投递给订阅者(对于这个包,当拉取时,job:work 命令将立即收到消息)。为了实现延迟消息,这个包简单地忽略它们,这意味着它不会确认消息。这将触发 Pub/Sub 在稍后重新投递消息,但并不完全准确。这意味着如果您延迟消息 60 秒,它将至少延迟 60 秒。