Интеграция Symfony RabbitMQ: методы и примеры кода

Symfony — популярная платформа PHP, а RabbitMQ — система обмена сообщениями. При использовании Symfony с RabbitMQ вы можете интегрировать возможности обмена сообщениями в свое приложение. Вот несколько методов, которые вы можете использовать, а также примеры кода:

  1. Отправка сообщения:
    Чтобы отправить сообщение в RabbitMQ, вы можете использовать класс AMQPProducer, предоставляемый библиотекой php-amqplib. Вот пример:
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$message = new AMQPMessage('Hello, RabbitMQ!');
$channel->basic_publish($message, '', 'queue_name');
$channel->close();
$connection->close();
  1. Потребление сообщений:
    Чтобы использовать сообщения из RabbitMQ, вы можете определить потребителя и привязать его к определенной очереди. Вот пример использования компонента Symfony Messenger:
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
class MyMessageHandler implements MessageHandlerInterface
{
    public function __invoke(MyMessage $message)
    {
        // Handle the message
    }
}
  1. Настройка соединения RabbitMQ:
    В Symfony вы можете настроить параметры соединения RabbitMQ в файле config/packages/messenger.yaml. Вот пример конфигурации:
framework:
    messenger:
        transports:
            amqp: 'amqp://guest:guest@localhost:5672/%2f'
        routing:
            'App\Message\MyMessage': amqp
  1. Настройка обработчиков сообщений.
    Для обработки сообщений необходимо определить обработчики сообщений. В Symfony вы можете настроить обработчики сообщений в файле config/packages/messenger.yaml. Вот пример:
framework:
    messenger:
        buses:
            messenger.bus.default:
                middleware:
                    - 'messenger.middleware.handle_message'
                handlers:
                    - App\Message\MyMessage: ['MyMessageHandler']