2.6 KiB
2.6 KiB
Nsq PHP

A NSQ Client library for PHP.
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.