petitpress / gps-messenger-bundle
为 Symfony Messenger 提供的 Google Pub/Sub 传输
3.0.0
2024-06-04 10:19 UTC
Requires
- php: >=8.2
- ext-json: *
- google/cloud-pubsub: ^2.0
- psr/cache: ^1.0|^2.0|^3.0
- symfony/config: ^5.4|^6.0|^7.0
- symfony/dependency-injection: ^5.4|^6.0|^7.0
- symfony/http-kernel: ^5.4|^6.0|^7.0
- symfony/messenger: ^5.4|^6.0|^7.0
- symfony/options-resolver: ^5.4|^6.0|^7.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/yaml: ^5.4|^6.0|^7.0
- symplify/easy-coding-standard: ^11.1
- vimeo/psalm: ^5.0
This package is auto-updated.
Last update: 2024-09-04 11:01:18 UTC
README
此捆绑包为 Symfony Messenger 提供了 Google Pub/Sub 传输的简单实现。
此捆绑包只需要 symfony/messenger
、google/cloud-pubsub
和 symfony/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