evgmel / php-amqpbus
此库是 php-amqplib 的 AMQP 消费者/发布者包装器的实现。它已在 RabbitMQ 上进行了测试。
v1.1.2
2017-05-22 12:56 UTC
Requires
- php: >=7.1.0
- php-amqplib/php-amqplib: 2.6.*
- symfony/event-dispatcher: ~2.8|^3.0
- symfony/monolog-bridge: ~2.8|^3.0
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is auto-updated.
Last update: 2024-09-29 04:25:49 UTC
README
此库是 php-amqplib 的包装器。
您可以在项目中使用 Consumer 和 Publisher/Producer 来通过 AMQP 处理 RabbitMQ 的消息。
支持的 RabbitMQ 版本
默认情况下,此库使用 AMQP 0.9.1
,因此需要 [RabbitMQ 2.0 或更高版本] (https://rabbitmq.cn/download.html)。
设置
通过 composer 安装
$ composer.phar require "evgmel/php-amqpbus:dev-master"
发布者和消费者使用示例
在使用这些示例之前,您应该设置 RabbitMQ,并需要了解创建消费者和发布者实例的设置参数。
Silex 应用程序中的使用
// publisher.php file
<?php
use Bus\AMQP\Publisher\MessagePublisherInterface;
require_once __DIR__ . '/../vendor/autoload.php';
/** @var \Silex\Application $app */
$app = require_once(__DIR__ . '/../app/config/bootstrap/app.php');
require_once(__DIR__ . '/../app/config/conf_dev.php');
$app->boot();
/** @var MessagePublisherInterface $publisher */
$publisher = $app['app.bus.amqp.publisher'];
$eventName = $argv[1] ?? 'not_specified_event_name';
$data = isset($argv[2]) ? [$argv[2]] : ['defaultDataKey' => 'defaultDataValue'];
$publisher->publish($eventName, $data);
运行此命令
php7.1 publisher.php myEventNameHere MyMessageTextHere
运行上一个命令后,将发送一个名为 'myEventNameHere' 的消息到队列;
// consumer.php file
<?php
use Bus\AMQP\Consumer\MessageConsumerInterface;
require_once __DIR__ . '/../vendor/autoload.php';
/** @var \Silex\Application $app */
$app = require_once(__DIR__ . '/../app/config/bootstrap/app.php');
require_once(__DIR__ . '/../app/config/conf_dev.php');
$app->boot();
/** @var MessageConsumerInterface $consumer */
$consumer = $app['app.bus.amqp.consumer'];
register_shutdown_function([$consumer, 'handleError']);
$consumer->consume();
运行此命令
php7.1 consumer.php
消费者将处理来自队列的传入消息。