videlalvaro / thumper
AMQP 工具
Requires
- php: ^5.3.3|^7.0
- php-amqplib/php-amqplib: ^2.6
Requires (Dev)
- phpunit/phpunit: ^4.8
- scrutinizer/ocular: ^1.2
- squizlabs/php_codesniffer: ^2.6
Replaces
- videlalvaro/thumper: v0.5.0
This package is not auto-updated.
Last update: 2024-09-14 13:08:14 UTC
README
Thumper 是一个 PHP 库,旨在抽象出可以在 RabbitMQ 上实现的一些消息模式。
在 examples 文件夹中,您可以了解如何实现 RPC、并行处理、简单的队列服务器和 pub/sub。
安装
通过 Composer
$ composer require php-amqplib/thumper
关于示例
每个示例都有一个 README.md 文件,说明如何执行它。所有示例都假定 RabbitMQ 正在运行。它们已经使用 RabbitMQ 2.1.1 进行了测试。
例如,向 RabbitMQ 发布消息就像这样
$producer = new Thumper\Producer($connection);
$producer->setExchangeOptions(array('name' => 'hello-exchange', 'type' => 'direct'));
$producer->publish($argv[1]);
然后在另一端接收它们
$myConsumer = function($msg)
{
echo $msg, "\n";
};
$consumer = new Thumper\Consumer($connection);
$consumer->setExchangeOptions(array('name' => 'hello-exchange', 'type' => 'direct'));
$consumer->setQueueOptions(array('name' => 'hello-queue'));
$consumer->setCallback($myConsumer); //myConsumer could be any valid PHP callback
$consumer->consume(5); //5 is the number of messages to consume.
队列服务器
本示例演示了如何创建一个生产者,它将作业发布到队列中。这些作业将由消费者(或多个消费者)稍后处理。
RPC
本示例演示了如何在 RabbitMQ 上进行 RPC。我们有一个 RPC 客户端,它将请求发送到服务器,服务器返回提供的字符串中的字符数。服务器代码位于 parallel_processing 文件夹中。
并行处理
本示例基于 RPC 示例。在这种情况下,它展示了如何使用 PHP 实现并行执行。假设您必须执行两个昂贵的任务。一个需要 5 秒,另一个需要 10 秒。而不是等待 15 秒,我们可以并行发送请求,然后等待回复,这些回复现在应该只需要 10 秒——最慢的任务所需的时间。
主题
在这种情况下,我们可以看到如何使用 RabbitMQ 实现发布/订阅。本例涉及日志记录。我们可以以不同的级别和主题记录日志,然后让监听不同日志级别的消费者相应地执行操作。
匿名消费者
在 topic 文件夹中,还有一个匿名消费者示例。这里的想法是,对于那些需要将队列连接到某些交换以“监视”正在发生的事情的情况,但当你退出程序时,你希望队列自动删除。我们可以使用一个未命名的队列来实现这一点。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CONDUCT。
免责声明
此代码是实验性的。目的是展示如何使用 RabbitMQ 和 AMQP 实现这些模式有多简单。
鸣谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。