Laravel 队列驱动程序 RabbitMQ
Laravel RabbitMQ 是 Vladimir Yuldashev 的一个软件包,它为 RabbitMQ提供了一个Laravel队列驱动程序。安装和配置后,您就可以使用Laravel的 Queue API了。它甚至可以从v8.0开始为Laravel Horizon提供开箱即用的支持。
接下来就是写作此文时,所有的可用队列配置选项:
'connections' => [
// ...
'rabbitmq' => [
'driver' => 'rabbitmq',
/*
* 如果你使用的是 Laravel Horizon,可设置为 "horizon"
*/
'worker' => env('RABBITMQ_WORKER', 'default'),
'dsn' => env('RABBITMQ_DSN', null),
/*
* 可以是一个实现了 \Interop\Amqp\AmqpConnectionFactory 接口的一个类 ,例如:
* - 如果安装了 enqueue/amqp-ext 则为 \EnqueueAmqpExt\AmqpConnectionFactory
* - 如果安装了 enqueue/amqp-lib 则为 \EnqueueAmqpLib\AmqpConnectionFactory
* - 如果安装了enqueue/amqp-bunny 则为 \EnqueueAmqpBunny\AmqpConnectionFactory
*/
'factory_class' => Enqueue\AmqpLib\AmqpConnectionFactory::class,
'host' => env('RABBITMQ_HOST', '127.0.0.1'),
'port' => env('RABBITMQ_PORT', 5672),
'vhost' => env('RABBITMQ_VHOST', '/'),
'login' => env('RABBITMQ_LOGIN', 'guest'),
'password' => env('RABBITMQ_PASSWORD', 'guest'),
'queue' => env('RABBITMQ_QUEUE', 'default'),
'options' => [
'exchange' => [
'name' => env('RABBITMQ_EXCHANGE_NAME'),
/*
* 确定当交换机不存在时下是否创建它。
*/
'declare' => env('RABBITMQ_EXCHANGE_DECLARE', true),
/*
* 阅读此文 https://www.rabbitmq.com/tutorials/amqp-concepts.html 获取更多可能值的相关信息
*/
'type' => env('RABBITMQ_EXCHANGE_TYPE', \Interop\Amqp\AmqpTopic::TYPE_DIRECT),
'passive' => env('RABBITMQ_EXCHANGE_PASSIVE', false),
'durable' => env('RABBITMQ_EXCHANGE_DURABLE', true),
'auto_delete' => env('RABBITMQ_EXCHANGE_AUTODELETE', false),
'arguments' => env('RABBITMQ_EXCHANGE_ARGUMENTS'),
],
'queue' => [
/*
* 确定当队列不存在时下是否创建它。
*/
'declare' => env('RABBITMQ_QUEUE_DECLARE', true),
/*
* 确定是否应将队列绑定到创建的交换机上。
*/
'bind' => env('RABBITMQ_QUEUE_DECLARE_BIND', true),
/*
* 阅读此文 https://www.rabbitmq.com/tutorials/amqp-concepts.html 获取更多可能值的相关信息
*/
'passive' => env('RABBITMQ_QUEUE_PASSIVE', false),
'durable' => env('RABBITMQ_QUEUE_DURABLE', true),
'exclusive' => env('RABBITMQ_QUEUE_EXCLUSIVE', false),
'auto_delete' => env('RABBITMQ_QUEUE_AUTODELETE', false),
'arguments' => env('RABBITMQ_QUEUE_ARGUMENTS'),
],
],
/*
* 确定当与 rabbitmq 通信出错时,应休眠的秒数
* 如果设置为 false,它将抛出异常而非休眠数秒。
*/
'sleep_on_error' => env('RABBITMQ_ERROR_SLEEP', 5),
/*
* 如果使用SSL连接,则为可选的SSL参数
* 使用SSL连接还需要配置RabbitMQ以启用SSL。 更多细节见此处:https://www.rabbitmq.com/ssl.html
*/
'ssl_params' => [
'ssl_on' => env('RABBITMQ_SSL', false),
'cafile' => env('RABBITMQ_SSL_CAFILE', null),
'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null),
'local_key' => env('RABBITMQ_SSL_LOCALKEY', null),
'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true),
'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null),
],
],
// ...
],
该软件包与 Laravel 和 Lumen兼容。它在底层传输库中也有一定的灵活性 - 您可以使用任何 ampq interop 进行兼容传输。
您可以在 vyuldashev/laravel-queue-rabbitmq上了解有关此软件包的更多信息,获取完整的安装说明以及在GitHub上查看源代码。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
本帖已被设为精华帖!