我在laravel v4.2项目中工作,我想要执行不同的queus任务。但现在我想通过使用两个或更多驱动程序来执行此任务。例如,我有一个发送注册电子邮件的队列,现在我想使用redis服务器发送电子邮件。
我的第二个队列是向用户发送推送通知,我想使用数据库驱动器。因此,在一个项目中使用两个或更多队列驱动程序是可能的。
请教育我。
谢谢
答案 0 :(得分:0)
只需在基座QueueManager
QueueManager
即可
扩展基本队列驱动程序
use Illuminate\Queue\Connectors\RedisConnector;
use Illuminate\Queue\QueueManager;
class RedisQueueManager extends QueueManager
{
public function __construct(\Illuminate\Foundation\Application $app)
{
parent::__construct($app);
$this->registerRedisConnector();
}
/**
* Get the name of the default queue connection.
*
* @return string
*/
public function getDefaultDriver()
{
return 'redis';
}
protected function registerRedisConnector()
{
$app = $this->app;
$this->addConnector('redis', function () use ($app) {
return new RedisConnector($app['redis']);
});
}
}
现在创建一个服务提供商,通过应用
访问它 <?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use App\Extensions\RedisQueueManager;
class RedisQueueServiceProvider extends ServiceProvider
{
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->bindShared('redis-queue', function ($app) {
return new RedisQueueManager($app);
});
}
}
最后在config/app.php
供应商阵列中注册您的服务提供商。
并使用它。
Route::get('/', function () {
$default = app('queue');
$redis = app('redis-queue');
});