kcs/messenger-extra

为symfony messenger提供额外的传输和序列化器支持

2.4.2 2024-04-17 15:11 UTC

This package is auto-updated.

Last update: 2024-09-17 22:42:08 UTC


README

Tests

此库为symfony messenger组件提供额外的传输(以及其他功能)。

安装

composer require kcs/messenger-extra

传输

Doctrine DBAL

可以通过DbalTransportFactory使用基于doctrine DBAL的传输。

支持延迟、优先级、过期(TTL)和唯一消息。

DSN支持以下方案

  • db2
  • mssql
  • mysql
  • mysql2
  • postgres
  • postgresql
  • pgsql
  • sqlite
  • sqlite3

Doctrine ORM

可以使用带有doctrine方案的现有ORM连接。

例如doctrine://default/queue将使用带有queue表的default doctrine连接。

doctrine方案还会注册一个postGenerateSchema事件监听器,在架构更新(或使用DoctrineMigrations时为迁移)期间创建正确的表。

Mongo

使用MongoDB PHP客户端作为传输。

支持延迟、优先级、过期(TTL)和唯一消息。

使用带有mongodb方案的DSN和/database/collection路径(如果未指定,则使用数据库defaultqueue集合)。

Mongodb身份验证

对于已认证的数据库,如果为每个数据库配置了用户,可以在DSN查询字符串中指定authSource选项。

mongodb://user:pass@server:port/database?authSource=database

⚠️ 注意:如果DSN中传递了用户名,则authSource连接选项已添加到传递给客户端库的mongo uri中。其值等于所选数据库(如果缺失则为default)。

ℹ️ 关于Mongo DSN支持的选项的信息,您可以检查PHP.net上的官方文档页面

Null

在测试环境中很有用,其中不应该发送任何消息。

消息工具

DelayedMessageInterface

允许指定消息延迟。在您的消息类中实现此接口以延迟消息的投递。

TTLAwareMessageInterface

允许消息过期。如果您希望消息在给定时间内过期,请实现此接口。

UniqueMessageInterface

只在队列中添加一次消息。如果存在具有相同唯一性键的另一个消息,则丢弃该消息。

兼容性

Symfony包

代码中包含symfony包,位于/lib目录下:使用MessengerExtraBundle将此库完全集成到您的symfony应用程序中。只需将其添加到bundles.php文件即可。

    Kcs\MessengerExtra\MessengerExtraBundle::class => ['all' => true],

将自动注册可用的传输和功能。

精彩的事情即将到来。

许可 & 贡献

此库基于MIT许可证发布。

请随意在GitHub上打开一个问题或PR。如果您想为此项目做出贡献,我们欢迎您!

A.