kcs / messenger-extra
为symfony messenger提供额外的传输和序列化器支持
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- symfony/messenger: ^4.4 || ^5.0 || ^6.0 || ^7.0
- thecodingmachine/safe: ^1.0 || ^2.0
Requires (Dev)
- ext-mongodb: ^1.5
- doctrine/dbal: ^2.10 || ^3.0
- doctrine/orm: ^2.6 || ^3.0
- kcs/serializer: ^2.0 || ^3.0 || ^4.0
- mongodb/mongodb: ^1.4
- phpspec/prophecy-phpunit: ^2.0
- phpunit/phpunit: ^9.0 || ^10.0
- ramsey/uuid: ^4.0
- ramsey/uuid-doctrine: ^2.0
- refugis/doctrine-extra: ^2.2 || ^3.0
- roave/security-advisories: dev-master
- solido/php-coding-standards: dev-master
- symfony/framework-bundle: ^4.2 || ^5.0 || ^6.0 || ^7.0
- symfony/process: ^4.2 || ^5.0 || ^6.0 || ^7.0
- symfony/property-access: ^4.2 || ^5.0 || ^6.0 || ^7.0
- symfony/serializer: ^4.2 || ^5.0 || ^6.0 || ^7.0
Suggests
- ramsey/uuid: Required to use mongodb and dbal transport
- ramsey/uuid-doctrine: Required for DBAL transport
Conflicts
- doctrine/dbal: <3.0
README
此库为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
路径(如果未指定,则使用数据库default
和queue
集合)。
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.