用于从代理(RabbitMQ)发布/接收消息的库。

v2.1.1 2024-05-21 09:13 UTC

README

 #StandWithUkraine 

事件代理:AMQP

Build Status

此库用于从RabbitMQ接收事件并将消息发布到AMQP。

为什么是它?

在许多应用程序中,我们必须使用后台进程来处理数据或创建/更新/删除任何条目。为此,我们使用AMQPRabbitMQ。但是,在AMQP的基本实现中(PHP 扩展PHPAmqpLib)我们遇到了一些问题

  • 在创建交换或队列之前,我们应该连接到RabbitMQ。但是在我们的逻辑(以控制器为例)中,我们不需要发送消息到RabbitMQ。
  • 声明交换或队列的所有选项都设置为标志,这可能难以理解和容易出错。

我们在这个库中将此过程完全隔离,以便易于发送消息到交换并轻松从队列接收消息。

定义

AMQP的所有条目都有一个自定义定义。每个定义都有自定义参数来声明交换或队列。

工厂

AMQP的所有条目都有一个工厂。它允许在实际使用过程中创建实际实例。

适配器

我们创建了一个库,它可以支持连接到代理的任何适配器。开箱即用的支持驱动程序包括

  • ext-amqp
  • composer php-amqplib

文档

所有文档存储在/docs/目录中。

开发

为了便于开发,您可以使用Docker

注意:我们使用内部网络将我们的库与RabbitMQ连接以进行测试和开发。

docker network create --driver bridge amqp
docker run -d --rm \
    --network amqp \
    --name amqp-rabbitmq \
    rabbitmq:management
docker build -t amqp .
docker run -it --rm \
    --name amqp \
    -v $(pwd):/code \
    --network amqp \
    -e "RABBITMQ_HOST=amqp-rabbitmq" \
    amqp bash

注意:为了调试,您可以公开15672端口以访问管理插件。

在成功运行并附加到容器后,您必须安装依赖项

composer update

在创建PR或将其合并到develop之前,请运行以下命令以验证代码

./bin/phpunit

./bin/phpcs --config-set show_warnings 0
./bin/phpcs --standard=vendor/escapestudios/symfony2-coding-standard/Symfony/ src/
./bin/phpcs --standard=tests/phpcs-ruleset.xml tests/