#nsq_swoole_client 基于swoole实现的NSQ客户端。支持sub、pub、mPub、auth。
- 消息去重、重新排队的机机制、日志等都可以通过实现已定义的接口去中心实现。一般情况下只需要实现消息处理方法即可。
- 默认实现的消费客户端构造方法参数
$finishAuto
为true
时,如果handle
方法返回false
或者抛出任何异常都将自动根据requeue
对象重新排队。 - 如果已对
message
对象调用了finish()
或者requeue()
方法并且失败时,走$finishAuto
为true
时的逻辑。 $finishAuto
为false
时,必须手动调用finish()
或者requeue()
。helper
目录中封装了常用的http
pub
和mpub
。
示例:
$lookupHost = '127.0.0.1:4160';
$topic = $channel = 'test';
// 重复排队10次,每次50秒延时下发
$reQueue = new \NsqClient\lib\requeue\Requeue(10, 50);
$client = new Client(
$topic,
$channel,
'',
function (\NsqClient\lib\message\Message &$message) {
echo "收到消息:{$message->getId()}\n";
$message->finish();
},
true,
null,
$reQueue,
[
'heartbeat_interval' => 1000//1秒的心跳间隔
]
);
// 开启的工作进程数
$workNum = 2;
(new NsqClient())->init($client, $lookupHost, $workNum);giot