首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel临时队列和消息

问Laravel临时队列和消息
EN

Stack Overflow用户
提问于 2019-08-16 12:34:00
回答 1查看 925关注 0票数 0

我正在用rabbitmq开发Laravel 5.1.46 (LTS),用于使用套餐的消息队列

.env

代码语言:javascript
复制
QUEUE_DRIVER=rabbitmq

config/queue.php

代码语言:javascript
复制
'rabbitmq' => [
        'driver' => 'rabbitmq',

        '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'),

        // name of the default queue,
        'queue' => env('RABBITMQ_QUEUE'),

        // create the exchange if not exists
        'exchange_declare' => true,

        // create the queue if not exists and bind to the exchange
        'queue_declare_bind' => true,

        'queue_params' => [
            'passive' => false,
            'durable' => true,  // false
            'exclusive' => false,
            'auto_delete' => false,
        ],

        'exchange_params' => [

            // more info at http://www.rabbitmq.com/tutorials/amqp-concepts.html
            'type' => env('RABBITMQ_EXCHANGE_TYPE', 'direct'),

            'passive' => false,

            // the exchange will survive server restarts
            'durable' => true,  // fakse

            'auto_delete' => false,
        ]

我总共有8队列。队列名存储在.env文件中。

代码语言:javascript
复制
QUEUE_ONE=queue-one
QUEUE_TWO=queue-two
.
.
.
QUEUE_EIGHT=queue-eight

在分派工作的时候,

代码语言:javascript
复制
dispatch(new Job1())->onQueue(env('QUEUE_ONE'))

队列和消息是持久的/持久的。

由于一些性能问题,我需要更改一些队列及其消息的持久性。所以,

  • 5个队列及其消息将是短暂的(非持久性的)
  • 3个队列及其消息将是持久的。

怎么可能-在拉拉维尔和拉比?

注:我知道,我可以

代码语言:javascript
复制
durable = false

但它适用于所有排队的人,

EN

回答 1

Stack Overflow用户

发布于 2019-08-22 08:04:55

代码语言:javascript
复制
// config/queue.php
'rabbitmq_durable' => [
    'driver' => 'rabbitmq',
    // ...
    'queue_params' => [
        'passive' => false,
        'durable' => true,
        'exclusive' => false,
        'auto_delete' => false,
    ],
    // ...
],
'rabbitmq_not_durable' => [
    'driver' => 'rabbitmq',
    // ...
    'queue_params' => [
        'passive' => false,
        'durable' => false,
        'exclusive' => false,
        'auto_delete' => false,
    ],
    // ...
]

Laravel 5.1

要在Laravel5.1上使用不同的信任和不同的连接,您必须使用Queue面板:

代码语言:javascript
复制
Queue::connection('rabbitmq_durable')->pushOn('queue_1', TestJob::class);
Queue::connection('rabbitmq_not_durable')->pushOn('queue_6', TestJob::class);

Laravel 5.2+

要在Laravel5.2及以后使用不同的信任和不同的连接,您可以使用如下的onConnection()方法:

代码语言:javascript
复制
TestJob::dispatch()->onQueue('queue_one')->onConnection('rabbitmq_durable');
TestJob::dispatch()->onQueue('queue_six')->onConnection('rabbitmq_not_durable');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57524745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档