graphaware / php-simplemq
此包最新版本(1.0.4)没有可用的许可信息。
Github事件API同步模块
1.0.4
2016-01-07 04:41 UTC
Requires
- symfony/filesystem: ^2.7
- symfony/finder: ^2.7
- symfony/yaml: ^2.7
- videlalvaro/php-amqplib: ^2.5
Requires (Dev)
- behat/behat: ^3.0
- bossa/phpspec2-expect: ^1.0
- phpspec/phpspec: ^2.2
- phpunit/phpunit: ^4.7
This package is not auto-updated.
Last update: 2024-09-14 17:48:16 UTC
README
GraphAware的PHP Simple Message Queue for RabbitMQ
RabbitMQ的快速应用开发。
此库使得仅通过提供简单的YAML配置文件,就能动态地创建通道、队列、绑定、生产者、消费者等。
用法
需要库依赖项
composer require graphaware/php-simplemq
定义连接、交换、生产者和消费者,例如
simple_mq: connections: default: host: 192.168.59.103 port: 5672 user: admin password: error vhost: "/" exchanges: logs: connection: default type: fanout durable: true error-logs: connection: default type: direct durable: true producers: logs: exchange: logs errors: exchange: error-logs routing_key: error consumers: logs-printer: exchange: logs ack: true queue: name: my-app-all-logs durable: true qos: prefetch_count: 1 error-logs-recorder: exchange: error-logs queue: name: my-app-error-logs durable: true qos: prefetch_size: 1 bindings: - queue: my-app-error-logs routing_key: error
通过提供配置文件的位置来启动库
require_once(__DIR__.'/vendor/autoload.php'); use GraphAware\SimpleMQ\SimpleMQ; $smq = SimpleMQ::withYAMLConfigFile(__DIR__.'/path_to_your_config_file.yml');
基于示例配置,通过库可以获得名为logs
和errors
的生产者以及名为logs-printer
和error-logs-recorder
的消费者。
要检索并开始消费队列,可以使用以下方法
$consumer = $smq->getConsumer('logs-printer'); $callback = function($message) { print_r($message->body); }; $consumer->consume($callback);
获取单个消息
$message = $consumer->getMessage(); // Returns a AMQPMessage instance
获取多个消息
$messages = $consumer->getMessageBatch(10); // Returns an array of AMQPMessage
有时,消息从发送到生产者可见之间可能会有延迟(例如在CI套件中)。
您可以定义最大尝试次数(maxAttempts),在停止读取队列之前达到批量大小(batchSize)。
$messages = $consumer->getMessageBatch(10, 20);
要开始向交换发送消息,操作几乎相同
$producer = $smq->getProducer('errors'); $message = json_encode(array('id' => 1234, 'text' => 'Hello world')); $producer->sendMessage($message);
根据配置,生产者和消费者确切地知道应该使用哪个路由键进行直接和主题交换,以及使用哪些绑定键将队列绑定到交换。
许可:MIT