php-amqplib/thumper

AMQP 工具

v0.5.0 2016-05-27 15:47 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:53:40 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

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 文件夹中还有一个匿名消费者示例。这里的想法是处理那些需要将队列连接到某些交换机以“监视”正在发生的事情的情况,但在您退出程序时,您希望队列自动删除。我们可以使用一个未命名的队列来实现这一点。

变更日志

请参阅 变更日志 了解最近更改的详细信息。

测试

$ composer test

贡献

请参阅 贡献行为准则 了解详细信息。

免责声明

此代码是实验性的。目的是展示如何使用 RabbitMQ 和 AMQP 实现这些模式有多简单。

致谢

许可

MIT 许可证(MIT)。请参阅 许可文件 了解更多信息。