scottaubrey/simplensqclient

为NSQ实时分布式消息平台nsqd协议提供的简单库

0.2.0-alpha 2015-03-13 10:28 UTC

This package is auto-updated.

Last update: 2020-07-19 00:26:40 UTC


README

概述

这是一个用于NSQ实时分布式消息平台nsqd协议的PHP库。 simplensqclient除了核心PHP发行版外没有其他依赖项,但需要PHP > 5.5。

simplensqclient实现了NSQ平台功能的大部分,但并非全部。

"简单"指的是订阅处理。该库不遵循NSQ项目的客户端设计建议,更具体地说,它不使用任何类型的线程或异步IO事件循环来处理套接字和消息。

相反,simplensqclient使用异步循环处理集群连接,等待一个就绪。然后逐个处理每个消息,在返回循环等待更多就绪连接之前。

这确实带来了一个主要限制:如果您对每个消息进行大量密集处理,您将遇到吞吐量和消息超时的问题。

然而,对于短事件型消息处理,它应该可以正常工作,并且可以通过运行更多订阅客户端来实现更大的吞吐量。

当前为alpha状态。simplensqclient没有实际的生产使用(据我所知)。

支持的NSQ协议功能功能支持
PUB
SUB每个nsqd实例只能有1条消息在途
TLS
Deflate需要PHP编译时包含zlib,并且在任何已知发布的PHP中都不工作,除非修补zlib流包装器,请参阅PHP错误#48725
AUTH
重连退避
发现
消息退避可能不需要,因为客户端目前从未达到退避。
SnappyPHP中没有流包装器支持
抽样

入门指南

使用composer require命令将scottaubrey/simplensqclient添加到composer中

composer.phar require "scottaubrey/simplensqclient"

然后您可以向nsqd发布消息

//create an NSQ instance with default hostname and port
$nsq = new NsqConnection;

//publish a simple string message
$nsq->publish("TestTopic", "My Message");

并订阅单个nsqd(每次一条消息)

//create an NSQ instance with default hostname and port
$nsq = new NsqConnection;

//publish a simple string message
foreach ($nsq->subscribe("TestTopic", "MyTestChannel") as $messageId => $message) {
    $nsq->finish($messageId);
}

examples目录中还有其他示例

路线图

这些是在1.0之前要完成的任务

  • 连接选项 - 尤其是可以配置消息超时和心跳间隔。
  • 整理API,Doc blocks
  • 发布策略 - 目前只支持轮询发布。

将来尝试的事情

许可证

此库根据开源MIT许可证授权,许可证文本包含在根目录中。