deb4ce686bc22c45a4d1872c673261c65618e6db
Nsq PHP

A NSQ Client library for PHP.
This library follow SemVer. Until version 1.0 will be released anything MAY change at any time, public API SHOULD NOT be considered stable. If you want use it before stable version was released install strict version without range.
Installation
This library is installable via Composer:
composer require nsq/nsq
Requirements
This library requires PHP 7.4 or later.
Although not required, it is recommended that you install the phpinnacle/ext-buffer to speed up phpinnacle/buffer .
Features
- PUB
- SUB
- Feature Negotiation
- Discovery
- Backoff
- TLS
- Snappy
- Sampling
- AUTH
Usage
Publish
use Nsq\Writer;
$writer = new Writer(address: 'tcp://nsqd:4150');
// Publish a message to a topic
$writer->pub('topic', 'Simple message');
// Publish multiple messages to a topic (atomically)
$writer->mpub('topic', [
'Message one',
'Message two',
]);
// Publish a deferred message to a topic
$writer->dpub('topic', 5000, 'Deferred message');
Subscription
use Nsq\Envelope;
use Nsq\Subscriber;
$subscriber = new Subscriber(address: 'tcp://nsqd:4150');
$generator = $subscriber->subscribe('topic', 'channel', timeout: 5);
foreach ($generator as $envelope) {
if (null === $envelope) {
// No message received while timeout
// Good place to pcntl_signal_dispatch() or whatever
continue;
}
if ($envelope instanceof Envelope) {
$payload = $envelope->message->body;
// handle message
$envelope->touch(); // Reset the timeout for an in-flight message
$envelope->requeue(timeout: 5000); // Re-queue a message (indicate failure to process)
$envelope->finish(); // Finish a message (indicate successful processing)
}
if ($stopSignalReceived) {
$generator->send(Subscriber::STOP); // Gracefully close connection
}
}
Integrations
License:
The MIT License (MIT). Please see LICENSE
for more information.
Description
Languages
PHP
95.9%
Dockerfile
3.7%
Makefile
0.4%