tbcd / multi-dynamic-messenger
2.0.0
2023-10-31 21:51 UTC
Requires
- php: >=8.1
- symfony/dependency-injection: ^6.0
- symfony/messenger: ^6.0
Requires (Dev)
- phpunit/phpunit: ^9.5|^10.0
This package is auto-updated.
Last update: 2024-09-30 02:05:37 UTC
README
此包是 symfony/messenger 组件的扩展,提供了一种在运行时修改传输而无需重启消费者的传输方式
安装
composer require tbcd/multi-dynamic-messenger
使用
首先,您需要实现一个提供传输数据的服务的接口,这个服务需要实现 TransportDataProviderInterface 接口
在下面的示例中,我们提供存储在数据库实体中的传输数据
# src\Messenger\EntityTransportDataProvider.php
class EntityTransportDataProvider implements TransportDataProviderInterface
{
public function getAll(): array
{
$entities = $this->em->getRepository(TransportEntity::class)->findAll();
return array_map(function(TransportEntity $entity) {
return new TransportData($entity->getName(), $entity->getDsn(), $entity->getOptions());
}, $entities);
}
}
然后,您需要配置传输工厂
- 将 messenger.transport_factory 标签添加到传输工厂
- 绑定您的 TransportDataProvider
# config/services.yaml
services:
...
TBCD\Messenger\MultiDynamicTransport\MultiDynamicTransportFactory:
tags: [ messenger.transport_factory ]
binds:
$transportDataProvider: App\Messenger\EntityTransportDataProvider
然后,您需要创建消息传递传输
# config/packages/messenger.yaml
framework:
messenger:
transports:
# https://symfony.com.cn/doc/current/messenger.html#transport-configuration
multidynamic:
dsn: 'multi-dynamic://'
最后,使用命令 php bin/console messenger:consume mytransportname 启动消费者