retailcrm / symfony-beanstalkd-messenger
Symfony Beanstalkd Messenger 桥接器
v2.0.0
2023-10-03 13:34 UTC
Requires
- php: >=7.3
- ext-json: *
- pda/pheanstalk: ^4.0
- symfony/messenger: ^5.0|^6.0
Requires (Dev)
- phpmd/phpmd: ^2.9
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-09-03 15:36:14 UTC
README
Symfony beanstalkd messenger
Beanstalkd 传输用于 symfony messenger
安装
composer require retailcrm/symfony-beanstalkd-messenger
使用
- 在
.env
配置文件中添加连接凭据
MESSENGER_TRANSPORT_DSN=beanstalkd://localhost:11300
-
创建您的消息和消息处理器 (关于消息)
-
在
config/packages/messenger.yml
中配置 messenger,例如
framework: messenger: transports: async: dsn: "%env(MESSENGER_TRANSPORT_DSN)%" options: queue_name: async routing: 'App\Message\MyMessage': async
- 在
config/services.yml
中添加传输工厂
services: # ... RetailCrm\Messenger\Beanstalkd\Transport\BeanstalkTransportFactory: tags: [messenger.transport_factory]
允许的传输选项
-
tube_name
- beanstalkd 中的 tube 名称 -
timeout
- 从 tube 接收作业的超时时间。默认 - 0 -
ttr
- 作业的 ttr 值。默认 - 60 -
not_send_if_exists
- 如果存在相同的作业,则不将作业发送到队列。默认 -false
所有选项都是可选的,如果没有指定 tube_name
,则将使用默认队列 default
。
not_send_if_exists
选项仅在指定了锁存储时才会工作。为此,您需要通过添加对 setLockStorage
方法的调用来自定义 BeanstalkTransportFactory
。
class MyBeanstalkTransportFactory extends BeanstalkTransportFactory //... public function createTransport(string $dsn, array $options, SerializerInterface $serializer): TransportInterface { return new BeanstalkTransport( Connection::fromDsn($dsn, $options)->setLockStorage($this->lockStorage), $serializer ); } //...
并在 config/services.yml
中添加您的自定义传输工厂
services: # ... App\Messenger\Custom\MyBeanstalkTransportFactory: tags: [messenger.transport_factory]
您的锁存储类必须实现 RetailCrm\Messenger\Beanstalkd\Storage\LockStorageInterface
。