对它的期望是:
1.可以不依赖于队列服务器
2.有可靠的命令行接口
结果是没有找到很合适的,但找了 enqueue库和nsqd,分别满足1和2的需求
enquque: PHP 可基于文件系统的队列,可以使用redis kafka beanstalk
// 生产者
$context = (new \Enqueue\ConnectionFactoryFactory())
->create('file:///path/to/queue/dir')
->createContext();
$destination = $context->createQueue('task');
//$destination = $context->createTopic('task');
$message = $context->createMessage('Hello world!');
$context->createProducer()->send($destination, $message);
// 消费者
$context = (new \Enqueue\ConnectionFactoryFactory())
->create('file:///path/to/queue/dir')
->createContext();
$destination = $context->createQueue('task');
$consumer = $context->createConsumer($destination)
while(true){
$message = $consumer->receive();
var_dump($message);
}
nsqd: Go 有丰富的命令行接口
-rwxr-xr-x@ 1 nop staff 4.7M 8 20 07:41 nsq_stat
-rwxr-xr-x@ 1 nop staff 4.9M 8 20 07:41 nsq_tail
-rwxr-xr-x@ 1 nop staff 5.0M 8 20 07:41 nsq_to_file
-rwxr-xr-x@ 1 nop staff 5.0M 8 20 07:41 nsq_to_http
-rwxr-xr-x@ 1 nop staff 5.0M 8 20 07:41 nsq_to_nsq
-rwxr-xr-x@ 1 nop staff 7.2M 8 20 07:41 nsqadmin
-rwxr-xr-x@ 1 nop staff 7.4M 8 20 07:41 nsqd
-rwxr-xr-x@ 1 nop staff 6.8M 8 20 07:41 nsqlookupd
-rwxr-xr-x@ 1 nop staff 4.8M 8 20 07:41 to_nsq