Назад к списку постов

Очереди Rabbit Mq установка, конфигурация, примеры кода в Laravel

Установка RabbitMQ на Ubuntu
  1. Обновите пакеты Ubuntu с помощью команды sudo apt update.
  1. Установите Erlang, который является необходимым для работы RabbitMQ, с помощью команды sudo apt install -y erlang.
  1. Добавьте репозиторий RabbitMQ с помощью команды echo "deb <http://www.rabbitmq.com/debian/> testing main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list.
  1. Добавьте ключ RabbitMQ с помощью команды wget -O- <https://www.rabbitmq.com/rabbitmq-release-signing-key.asc> | sudo apt-key add -.
  1. Обновите пакеты Ubuntu еще раз с помощью команды sudo apt update.
  1. Установите RabbitMQ с помощью команды sudo apt install -y rabbitmq-server.

После выполнения этих шагов RabbitMQ будет установлен на вашем сервере Ubuntu.

После установки и настройки веб-интерфейса RabbitMQ, вы можете приступить к конфигурации самого RabbitMQ. Вот пример базовой конфигурации:

  1. Откройте файл конфигурации RabbitMQ: sudo nano /etc/rabbitmq/rabbitmq.config.
  1. Добавьте следующие строки в файл:
[
  {rabbit, [
     {loopback_users, []},
     {tcp_listeners, ["127.0.0.1", 5672]},
     {default_vhost, <<"/">>},
     {default_user, <<"guest">>},
     {default_pass, <<"guest">>}
  ]}
].

Здесь:

  1. Сохраните и закройте файл.
  1. Перезапустите RabbitMQ: sudo service rabbitmq-server restart.

Теперь RabbitMQ настроен с базовой конфигурацией. Помните, что вы можете изменить эту конфигурацию в соответствии с вашими требованиями.

После установки и настройки RabbitMQ на сервере, вы можете взаимодействовать с ним с помощью Laravel. Вот пример конфигурации для Laravel:

  1. Установите пакет Laravel RabbitMQ с помощью Composer: composer require vladimir-yuldashev/laravel-queue-rabbitmq.
  1. Откройте файл конфигурации очередей Laravel: nano config/queue.php.
  1. Добавьте следующий код в секцию connections:
'rabbitmq' => [
    'driver' => 'rabbitmq',
    'queue' => env('RABBITMQ_QUEUE', 'default'),
    'connection' => PhpAmqpLib\\Connection\\AMQPLazyConnection::class,
    'hosts' => [
        [
            'host' => env('RABBITMQ_HOST', '127.0.0.1'),
            'port' => env('RABBITMQ_PORT', 5672),
            'user' => env('RABBITMQ_USER', 'guest'),
            'password' => env('RABBITMQ_PASSWORD', 'guest'),
            'vhost' => env('RABBITMQ_VHOST', '/'),
        ],
    ],
],
  1. Затем убедитесь, что в файле .env вашего проекта Laravel установлены правильные значения для RABBITMQ_QUEUE, RABBITMQ_HOST, RABBITMQ_PORT, RABBITMQ_USER, RABBITMQ_PASSWORD и RABBITMQ_VHOST.

Теперь Laravel настроен для работы с RabbitMQ в качестве драйвера очереди.

Вот базовый пример использования очередей в Laravel:

use Illuminate\\Support\\Facades\\Queue;

Queue::push(function($job) {
    // Здесь мы можем выполнить любую тяжелую обработку, которая требуется от сервера нашего приложения!
    $job->delete();
});

В этом примере функция push Laravel добавляет задание на выполнение в очередь. Когда сервер очереди готов обработать новое задание, он запустит задание и удалит его из очереди, когда задание будет успешно выполнено.

Если вам нужно отложить выполнение задания на определенное время, вы можете использовать метод later:

$when = now()->addMinutes(10);

Queue::later($when, function($job) {
    // Эта задача будет добавлена в очередь и выполнена не ранее, чем через 10 минут!
    $job->delete();
});

В этом примере задание будет добавлено в очередь, но не будет выполнено, пока не наступит отложенное время.

#DevOps #RabbitMq #Laravel

Назад к списку постов Следующий пост

menuзакрыть

начать проект

Заявка отправлена

Спасибо! Заявка отправлена. Свяжемся с вами в течении часа!