wuwx/laravel-plus-amqp is a Laravel package.
It currently has 0 GitHub stars and 95 downloads on Packagist (latest version v1.8.0).
Install it with composer require wuwx/laravel-plus-amqp.
Discover more Laravel packages by wuwx
or browse all Laravel packages to compare alternatives.
Last updated
Laravel AMQP 扩展,基于 PHP ext-amqp 提供连接、交换机、队列的简单管理与发布/消费封装。
ext-amqp(composer.json 中为 suggest)illuminate/support ~5.1 或 ^6 ~ ^12composer require wuwx/laravel-plus-amqp
Laravel 5.5+ 会自动发现服务提供者:
Wuwx\LaravelPlusAmqp\LaravelPlusAmqpServiceProviderLaravel 5.4 及以下版本需手动注册:
// config/app.php
'providers' => [
Wuwx\LaravelPlusAmqp\LaravelPlusAmqpServiceProvider::class,
],
'aliases' => [
'Amqp' => Wuwx\LaravelPlusAmqp\AmqpFacade::class,
],
php artisan vendor:publish --tag=config
发布后配置文件位于:config/amqp.php。
ext-amqp 可用AMQP_HOST=127.0.0.1
AMQP_PORT=5672
AMQP_VHOST=/
AMQP_LOGIN=guest
AMQP_PASSWORD=guest
默认配置来自 config/amqp.php:
return [
'defaults' => [
'connection' => 'default',
'exchange' => 'default',
'queue' => 'default',
],
'connections' => [
'default' => [
'host' => env('AMQP_HOST', 'localhost'),
'port' => env('AMQP_PORT', 5672),
'vhost' => env('AMQP_VHOST', '/'),
'login' => env('AMQP_LOGIN', 'guest'),
'password' => env('AMQP_PASSWORD', 'guest'),
],
],
'exchanges' => [
'default' => [
'connection' => 'default',
'name' => 'exchange_name',
'type' => 'topic',
'flags' => AMQP_DURABLE,
],
],
'queues' => [
'default' => [
'connection' => 'default',
'bindings' => [
['exchange_name', 'routing_key'],
],
],
],
];
connections 数组会作为 AMQPConnection 的参数传入。exchanges 首次调用时会自动声明(declareExchange)。queues 首次调用时会自动声明并执行 bindings(bind)。bindings 结构为 [exchange, routing_key],等价于 $queue->bind($exchange, $routingKey)。包内通过容器单例 amqp 提供管理器,也提供 Facade:Wuwx\LaravelPlusAmqp\AmqpFacade。
use Wuwx\LaravelPlusAmqp\AmqpFacade as Amqp;
Amqp::publish(
'payload',
'routing.key',
AMQP_NOPARAM,
['content_type' => 'text/plain']
);
use Wuwx\LaravelPlusAmqp\AmqpFacade as Amqp;
Amqp::consume(function ($message, $queue) {
// 处理消息
$queue->ack($message->getDeliveryTag());
});
publish与consume的参数会直接透传给AMQPExchange::publish与AMQPQueue::consume, 具体参数请参考ext-amqp文档。
$manager = app('amqp');
$connection = $manager->connection('default');
$exchange = $manager->exchange('default');
$queue = $manager->queue('default');
$exchange->publish('payload', 'routing.key');
.
├── config
│ └── amqp.php # 默认配置
├── src
│ ├── AmqpFacade.php # Facade
│ ├── AmqpManager.php # 管理器(connection/exchange/queue)
│ └── LaravelPlusAmqpServiceProvider.php
├── tests
│ └── TestCase.php
└── composer.json
vendor/bin/phpunit