keboola/messenger-bundle

Keboola Messenger Bundle

安装次数: 1,094

依赖项: 0

建议者: 0

安全性: 0

星标: 0

关注者: 8

分支: 0

开放问题: 0

类型:symfony-bundle


README

为Keboola平台预先配置的Symfony Messenger扩展包。

安装

使用Composer安装包

composer require keboola/messenger-bundle

配置

扩展包支持以下配置选项

  • platform - 可选,awsazuregcpnull
    • 当未设置(或设置为 null)时,扩展包将不会设置任何传输
  • connection_events_queue_dsn - 可选,连接事件队列的DSN
  • connection_audit_log_queue_dsn - 可选,连接审计日志队列的DSN

有关DSN语法的详细信息,请参阅每个平台驱动程序的文档

参考

keboola_messenger:
  platform: "%env(PLATFORM)%"
  connection_events_queue_dsn: "%env(CONNECTION_EVENTS_QUEUE_DSN)%"
  connection_audit_log_queue_dsn: "%env(CONNECTION_AUDIT_LOG_QUEUE_DSN)%"

开发

先决条件

  • aws CLI,已配置 Keboola-Dev-Platform-Services-AWSAdministratorAccess 配置文件
  • az CLI,已配置用于Keboola开发平台服务团队订阅
    • 运行 az account set --subscription c5182964-8dca-42c8-a77a-fa2a3c6946ea
  • 安装 terraform (https://www.terraform.io) 和 jq (https://stedolan.github.io/jq) 以设置本地环境
  • 安装 docker 以运行和开发应用程序

TL;DR

export NAME_PREFIX= # your name/nickname to make your resource unique & recognizable

cat <<EOF > ./provisioning/local/terraform.tfvars
name_prefix = "${NAME_PREFIX}"
EOF

terraform -chdir=./provisioning/local init -backend-config="key=messenger-bundle/${NAME_PREFIX}.tfstate"
terraform -chdir=./provisioning/local apply
./provisioning/local/update-env.sh aws # or azure

docker compose run --rm dev-messenger-bundle composer install
docker compose run --rm dev-messenger-bundle composer ci

逆向工程事件

如果在现有的序列化器中找到问题,或者需要实现新的序列化器以支持新平台,则可以连接到测试环境中的真实队列以检查事件结构。

每个平台的过程略有不同,但基本思路是相同的

  1. 在Web控制台中打开测试账户/项目/环境 (https://portal.azure.comhttps://console.cloud.google.com 等.)
  2. 配置队列以进行您想要调试的事件类型
    • 在GCP中为现有主题创建新的订阅
      • 在Pub/Sub中打开您想订阅的主题
      • 具体来说,转到“订阅”选项卡,点击“创建订阅”
    • 在AWS中创建新的SQS队列,并将其订阅到现有的SNS主题
      • 转到SQS并创建新的队列
      • 转到队列列表,选择队列,然后在“操作”菜单中选择“订阅SNS主题”
    • 在Azure中创建新的Service Bus并将其订阅到现有的Event Grid主题
  3. 手动更新 .env.local 配置以连接到队列
    • 将队列DSN设置为之前步骤中创建的队列
    • 在GCP中,您可以使用本地应用程序默认凭证
      1. ~/.config/gcloud/application_default_credentials.json 的内容复制到 ./var/gcp/private-key.json
      2. 设置额外的ENV GCLOUD_PROJECT
  4. 运行 php tests/console messenger:consume <transport_name> -vvv --limit 1 从队列中接收一个事件

如果事件成功消费,你可以在输出中看到其内容。

完成操作后,别忘了清理并删除队列。

许可证

MIT 许可,请参阅 LICENSE 文件。