symfony-bundles / queue-bundle
Symfony 队列组件
v2.0.0
2017-10-18 00:18 UTC
Requires
- php: >=5.6
- symfony-bundles/bundle-dependency: ^1.0
- symfony-bundles/redis-bundle: ^1.0
Requires (Dev)
- phpunit/php-code-coverage: ^3.3.0|^4.0
- phpunit/phpunit: ^5.3
README
安装
- 使用 composer 安装组件
composer require symfony-bundles/queue-bundle
- 在 kernel 中启用组件
public function registerBundles() { $bundles = [ // ... new SymfonyBundles\QueueBundle\SymfonyBundlesQueueBundle(), // ... ]; ... }
- 在 config.yml 中配置队列组件。
默认配置
sb_queue: service: alias: 'queue' # alias for service `sb_queue` (e.g. $this->get('queue')) class: 'SymfonyBundles\QueueBundle\Service\Queue' storage: 'redis' # storage key from `queue.storages` section settings: queue_default_name: 'queue:default' # default name for queue storages: redis: class: 'SymfonyBundles\QueueBundle\Service\Storage\RedisStorage' client: 'sb_redis.client.default' # storage client service id
- 在 config.yml 中配置 Redis 客户端。有关 RedisBundle 配置的更多信息,请参阅RedisBundle 配置。
如何使用
队列使用的简单示例
$queue = $this->get('sb_queue'); // get the service // or use: $this->get('queue'); the `queue` service use as alias, // which setting in config.yml in parameter `sb_queue.service.alias` // adding some data to queue $queue->push('User "demo" registered'); $queue->push(1234567890); $queue->push(new \stdClass); // get count of items from queue $queue->count(); // returns integer: 3
// now, we can get the data at any time in the queue order // get data from queue $queue->pop(); // returns string: User "demo" registered $queue->count(); // returns integer: 2 $queue->pop(); // returns integer: 1234567890 $queue->count(); // returns integer: 1 $queue->pop(); // returns object: object(stdClass) $queue->count(); // returns integer: 0
如果你想要更改队列
// adding data to queue `notifications`
$queue->setName('application:notifications');
$queue->push('You have a new message from Jessica');
// adding data to queue `settings`
$queue->setName('account:settings');
$queue->push('User with ID 123 changed password');
// adding data to default queue
$queue->setName('queue:default');
$queue->push('To be or not to be');