sudo apt update
.sudo apt
install -y erlang
.
echo "deb <http://www.rabbitmq.com/debian/>
testing main" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
.
wget -O- <https://www.rabbitmq.com/rabbitmq-release-signing-key.asc>
| sudo apt-key add -
.
sudo apt update
.sudo apt install -y rabbitmq-server
.После выполнения этих шагов RabbitMQ будет установлен на вашем сервере Ubuntu.
После установки и настройки веб-интерфейса RabbitMQ, вы можете приступить к конфигурации самого RabbitMQ. Вот пример базовой конфигурации:
sudo nano /etc/rabbitmq/rabbitmq.config
.[
{rabbit, [
{loopback_users, []},
{tcp_listeners, ["127.0.0.1", 5672]},
{default_vhost, <<"/">>},
{default_user, <<"guest">>},
{default_pass, <<"guest">>}
]}
].
Здесь:
loopback_users
позволяет пользователям подключаться через
localhost без ограничений.
tcp_listeners
указывает, что RabbitMQ должен слушать
соединения на порту 5672 на localhost.
default_vhost
, default_user
и
default_pass
устанавливают значения по умолчанию для виртуального хоста, имени пользователя
и пароля.
sudo service rabbitmq-server restart
.Теперь RabbitMQ настроен с базовой конфигурацией. Помните, что вы можете изменить эту конфигурацию в соответствии с вашими требованиями.
После установки и настройки RabbitMQ на сервере, вы можете взаимодействовать с ним с помощью Laravel. Вот пример конфигурации для Laravel:
composer require
vladimir-yuldashev/laravel-queue-rabbitmq
.
nano config/queue.php
.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', '/'),
],
],
],
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();
});
В этом примере задание будет добавлено в очередь, но не будет выполнено, пока не наступит отложенное время.
menuзакрыть
Спасибо! Заявка отправлена. Свяжемся с вами в течении часа!