在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。