在ZendQueue和Kestrel上体验消息队列服务器.

美洲红隼

用Scala编写的消息队列服务器。据说它在Twitter上使用。
Twitter上使用的开源消息队列服务器Kestrel,是用Scala编写的:侍ズム#samuraism

安装和启动

$ curl -O http://robey.github.com/kestrel/download/kestrel-2.4.1.zip
$ unzip kestrel-2.4.1.zip
$ cd kestrel-2.4.1
$ sudo java -jar kestrel_2.9.2-2.4.1.jar

ZendQueue (木库)

其中之一是Zend Framework组件,用于使用消息队列。

GitHub
https://github.com/zendframework/ZendQueue

有多个适配器用于存储消息。虽然没有专门为Kestrel设计的适配器,但由于Kestrel支持memcached协议,因此可使用MemcacheQ适配器。

内存缓存

请事先安装Memcached库。
如果是Mac系统,您可以使用Homebrew方便地进行安装♪

$ brew install memcached
$ brew install memcache-php

只需一种选择,请将以下内容用中文进行本地化:
体验消息队列服务器。

请准备两个脚本。
・worker.php:工作进程。从队列中获取消息并显示。

<?php
// worker.php
$options = array(
  'name' => 'ack_queue',
    'driverOptions' => array(
        'host' => 'localhost',
        'port' => '22133',
        ),
    );

$queue = new ZendQueue\Queue('MemcacheQ', $options);

for (;;) {
    $messages = $queue->receive(1);
    foreach ($messages as $mess) if ($mess->body) echo $mess->body . PHP_EOL;
}

・front.php:向队列发送消息。

<?php
// front.php
$options = array(
  'name' => 'ack_queue',
    'driverOptions' => array(
        'host' => 'localhost',
        'port' => '22133',
        ),
    );

$queue = new ZendQueue\Queue('MemcacheQ', $options);
$queue->send('Hello, World!');

请打开两个终端。
在终端1上运行worker.php。
如果没有返回提示符,那么它会监视Kestrel队列。

当在终端2上执行front.php时…
终端1将显示”Hello, World!”!

只是很简单,就这样了。
当”Hello, World”出现时,感动不已呢(・∀・)
增加执行worker.php的终端,就更加有趣了♪

请参阅

Kestrel是一个开源的消息队列服务器,使用Scala编写,在Twitter上被广泛使用:侍ズム#samuraism。
通过PHP+Kestrel+Supervisor,轻松实现任务队列:アシアルブログ。
利用Zend_Queue,在PHP应用中充分利用消息队列服务器:CodeZine。

广告
将在 10 秒后关闭
bannerAds