Как настроить подключение к RabbitMQ в Laravel с использованием Docker?

Как настроить соединение между двумя проектами, используя RabbitMQ, запущенный в Docker, и отправить сообщение с помощью PHP библиотеки mpqlib?
  • 2 июля 2024 г. 16:02
Ответы на вопрос 2
Для настройки подключения к RabbitMQ в Laravel с использованием Docker вам следует выполнить следующие шаги:

1. Создайте файл docker-compose.yml для запуска RabbitMQ контейнера:

```yaml
version: '3'
services:
  rabbitmq:
    image: rabbitmq:management
    ports:
      - "5672:5672"
      - "15672:15672"
```

2. Запустите контейнер RabbitMQ:

```bash
docker-compose up -d
```

3. Добавьте библиотеку php-amqplib/php-amqplib к вашему проекту Laravel, используя Composer:

```bash
composer require php-amqplib/php-amqplib
```

4. Создайте класс для работы с RabbitMQ в вашем Laravel проекте:

```php
<?php

namespace App\Services;

use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;

class RabbitMQService
{
    protected $connection;
    protected $channel;

    public function __construct()
    {
        $this->connection = new AMQPStreamConnection('rabbitmq', 5672, 'guest', 'guest');
        $this->channel = $this->connection->channel();
    }

    public function sendMessage($queue, $message)
    {
        $this->channel->queue_declare($queue, false, true, false, false);

        $msg = new AMQPMessage($message);
        $this->channel->basic_publish($msg, '', $queue);

        $this->channel->close();
        $this->connection->close();
    }
}
```

5. Используйте этот класс в вашем контроллере для отправки сообщений:

```php
<?php

namespace App\Http\Controllers;

use App\Services\RabbitMQService;
use Illuminate\Http\Request;

class RabbitMQController extends Controller
{
    public function send()
    {
        $rabbitmqService = new RabbitMQService();
        $rabbitmqService->sendMessage('my_queue', 'Hello, RabbitMQ!');

        return 'Message sent successfully!';
    }
}
```

6. Запустите контейнеры вашего Laravel проекта и RabbitMQ:

```bash
docker-compose up -d
```

Теперь вы можете отправить сообщение через RabbitMQ из вашего Laravel проекта с помощью класса RabbitMQService.

Чтобы настроить соединение между двумя проектами с использованием RabbitMQ, вам потребуется повторить шаги 1-4 для второго проекта и указать в настройках подключения к RabbitMQ IP адрес или название хоста первого проекта, на котором запущен RabbitMQ контейнер.

Надеюсь, это поможет вам настроить соединение и отправить сообщение с помощью RabbitMQ и PHP библиотеки mpqlib между вашими проектами.
Почему вы из разных конфигов пытаетесь достучаться до сервиса по имени?
Похожие вопросы