petitpress/gps-messenger-bundle

为 Symfony Messenger 提供的 Google Pub/Sub 传输

安装次数: 218,270

依赖项: 2

建议者: 0

安全性: 0

星标: 19

关注者: 6

分支: 15

开放性问题: 5

类型:symfony-bundle

3.0.0 2024-06-04 10:19 UTC

README

此捆绑包为 Symfony Messenger 提供了 Google Pub/Sub 传输的简单实现。

此捆绑包只需要 symfony/messengergoogle/cloud-pubsubsymfony/options-resolver 包。与 Enqueue GPS 传输 相比,它不需要 Enqueue某些桥梁。它支持使用 OrderingKeyStamp 对消息进行排序,并且不是过时的。

安装

步骤 1:安装捆绑包

在容器内执行以下命令以下载捆绑包的最新版本

$ composer require petitpress/gps-messenger-bundle --no-scripts

步骤 2:配置环境变量

官方 Google Cloud PubSub SDK 需要一些全局可访问的环境变量。

您可能需要将默认的 Symfony DotEnv 实例更改为使用 putenv,因为 Google 需要通过 getenv 访问一些变量。为此,请在 config/bootstrap.php 中使用 putenv 方法。

(new Dotenv())->usePutenv()->...

Google Pub/Sub 可配置变量的列表

# use these for production environemnt:
GOOGLE_APPLICATION_CREDENTIALS='google-pubsub-credentials.json'
GCLOUD_PROJECT='project-id'

# use these for development environment (if you have installed Pub/Sub emulator):
PUBSUB_EMULATOR_HOST=http://localhost:8538

或如果您有基于 base64 编码的凭证环境变量

# config/packages/messenger.yaml

framework:
    messenger:
        transports:
            gps_transport:
                dsn: 'gps://default'
                options:
                    client_config:
                        credentials: '%env(json:base64:GOOGLE_PUBSUB_KEY)%'

步骤 3:配置 Symfony Messenger

# config/packages/messenger.yaml

framework:
    messenger:
        transports:
            gps_transport:
                dsn: 'gps://default'
                options:
                    client_config: # optional (default: [])
                        apiEndpoint: 'https://europe-west3-pubsub.googleapis.com'
                    topic: # optional (default name: messages)
                        name: 'messages'
                        options: # optional create options if not exists (default: []), for all options take at look at https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.188.0/pubsub/topic?method=create
                            labels:
                                - label1
                                - label2
                    subscription: # optional (default the same as topic.name)
                        name: 'messages'
                        options: # optional create options if not exists (default: []), fol all options take a look at https://googleapis.github.io/google-cloud-php/#/docs/google-cloud/v0.188.0/pubsub/subscription?method=create
                            enableExactlyOnceDelivery: true
                            labels:
                                - label1
                                - label2
                        pull:
                            maxMessages: 10 # optional (default: 10)

或者

# config/packages/messenger.yaml

framework:
    messenger:
        transports:
            gps_transport:
                dsn: 'gps://default/messages?client_config[apiEndpoint]=https://europe-west3-pubsub.googleapis.com&subscription[pull][maxMessages]=10'

在本地使用模拟器

# config/packages/dev/messenger.yaml

framework:
    messenger:
        transports:
            gps_transport:
                options:
                    client_config:
                        hasEmulator: true
                        emulatorHost: '%env(PUBSUB_EMULATOR_HOST)%'

步骤 4:配置 PetitPressGpsMessengerBundle(可选)

配置存储身份验证令牌的缓存服务。默认为 cache.app

# config/packages/petit_press_gps_messenger.yaml

petit_press_gps_messenger:
    auth_cache: 'cache.app'

步骤 5:如果需要,使用可用的戳记

  • OrderingKeyStamp:用于保持同一上下文的消息顺序。有关更多信息,请参阅官方文档

  • AttributesStamp:用于向序列化消息添加上下文元数据。有关更多信息,请参阅官方文档。当与订阅过滤器一起使用时非常有用。

步骤 6:从配置中创建主题

bin/console messenger:setup-transports