我希望我的客户发送的数据(通过邮件)放在队列中,我服务器上的PHP脚本首先检查队列是否为空.如果队列不为空,那么脚本将逐个处理队列中的所有数据.我该怎么办?
这是您可以使用enqueue库轻松完成的操作.首先,您可以选择各种传输,例如AMQP,STOMP,Redis,Amazon SQS,Filesystem等.
其次,这非常容易使用.让我们从安装开始:
您必须安装enqueue/simple-client库和其中一个传输.假设您选择了一个文件系统,请安装enqueue/fs库.总结一下:
composer require enqueue/simple-client enqueue/fs
Run Code Online (Sandbox Code Playgroud)
现在让我们看看如何从POST脚本发送消息:
<?php
// producer.php
use Enqueue\SimpleClient\SimpleClient;
include __DIR__.'/vendor/autoload.php';
$client = new SimpleClient('file://'); // the queue will store messages in tmp folder
$client->sendEvent('a_topic', 'aMessageData');
Run Code Online (Sandbox Code Playgroud)
消费脚本:
<?php
// consumer.php
use Enqueue\SimpleClient\SimpleClient;
use Enqueue\Psr\PsrProcessor;
use Enqueue\Psr\PsrMessage;
include __DIR__.'/vendor/autoload.php';
$client = new SimpleClient('file://');
$client->bind('a_topic', 'a_processor_name', function(PsrMessage $psrMessage) {
// processing logic here
return PsrProcessor::ACK;
});
// this call is optional but it worth to mention it.
// it configures a broker, for example it can create queues and excanges on RabbitMQ side.
$client->setupBroker();
$client->consume();
Run Code Online (Sandbox Code Playgroud)
consumer.php通过使用supervisord或其他进程管理器运行尽可能多的进程,在本地计算机上,您可以运行它而无需任何额外的库或包.
这是一个基本的例子,enqueue有很多其他功能可能会派上用场.如果您有兴趣,请查看入队文件.
| 归档时间: |
|
| 查看次数: |
34201 次 |
| 最近记录: |