iztoksvetik / silex-amqp-provider
Silex AMQP提供者
1.0.1
2015-10-20 15:12 UTC
Requires
- php: >=5.3
- ext-amqp: *
- m6web/amqp-bundle: 1.6.*
- silex/silex: ~1.2
Requires (Dev)
- phpunit/phpunit: ~4.1
This package is not auto-updated.
Last update: 2024-09-26 00:35:46 UTC
README
# AMQP Silex 服务提供者
## 关于
此 Silex 服务提供者将 M6Web/AmqpBundle 注册为 Silex 中的服务。它使用 php-amqp 扩展,并且可以与任何 AMQP 0-9-1 兼容的服务器通信,例如 RabbitMQ、OpenAMQP 和 Qpid。
从 Silex 应用程序向 AMQP 服务器发布消息非常简单
$app->post('/message', function(Request $request) use ($app){ $producer = $app['amqp.producer']['producer_name']; $producer->publish('Some message'); return new Response($msg_body); });
同样地,消费也很简单
$consumer = $app['amqp.consumer']['consumer_name']; $message = $consumer->getMessage()->getBody();
## 安装
在 composer.json 中要求
{ "require": { "iztoksvetik/silex-amqp-provider": "~1.0", } }
注册服务
use Silex\Application; use IztokSvetik\SilexAmqp\Provider; $app = new Application(); $app->register(new AmqpServiceProvider());
安装提供者
$ composer update iztoksvetik/silex-amqp-provider
## 配置
$app->register(new AmqpServiceProvider(), [ 'amqp.connections' => [ 'default' => [ 'host' => 'localhost', // optional - default "localhost" 'port' => 5672, // optional - default 5672 'login' => 'guest', // optional - default "guest" 'password' => 'guest', // optional - default "guest" 'vhost' => '/', // optional - default "/" 'lazy' => false // optional - default false ], ], 'amqp.producers' => [ 'my_producer' => [ 'class' => 'My\Producer\Class', // optional - overload default class 'connection' => 'default', // required 'queue_options' => [ 'name' => 'my-queue', // optional 'passive' => false, // optional - default false 'durable' => true, // optional - default true 'auto_delete' => false, // optional - default false ], 'exchange_options' => [ 'name' => 'my-exchange', // required 'type' => 'direct', // required - possible direct/fanout/topic/headers 'passive' => false, // optional - default false 'durable' => true, // optional - default true 'auto_delete' => false, // optional - default false 'arguments' => ['key' => 'value'], // optional - default [] 'routing_keys' => ['key1', 'key2'], // optional - default [] 'publish_attributes' => ['key' => 'value'], // optional - default [] ], ] ], 'amqp.consumers' => [ 'my_consumer' => [ 'class' => 'My\Consumer\Class', // optional - overload default class 'connection' => 'default', // required 'exchange_options' => [ 'name' => 'my-exchange' // required ], 'queue_options' => [ 'name' => 'my-queue', // required 'passive' => false, // optional - default false 'durable' => true, // optional - default true 'exclusive' => false, // optional - default false 'auto_delete' => false, // optional - default false 'arguments' => ['key' => 'value'], // optional - default [] 'routing_keys' => ['key1', 'key2'], // optional - default [] ], 'qos_options' => [ 'prefetch_size' => 0, // optional - default 0 'prefetch_count' => 0 // optional - default 0 ] ] ], ]);
在此示例中,您的服务容器将具有服务 $app['amqp.consumer']['my_consumer']
和 $app['amqp.producer']['my_producer']