PHP Client for NSQ.
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.
This library is installable via Composer:
composer require nsq/nsq
This library requires PHP 8.0 or later.
Although not required, it is recommended that you install the phpinnacle/ext-buffer to speed up phpinnacle/buffer .
- PUB
- SUB
- Feature Negotiation
- Discovery
- Backoff
- TLS
- Deflate
- Snappy
- Sampling
- AUTH
use Nsq\Producer;
$producer = Producer::create(address: 'tcp://nsqd:4150');
// Publish a message to a topic
$producer->publish('topic', 'Simple message');
// Publish multiple messages to a topic (atomically)
$producer->publish('topic', [
'Message one',
'Message two',
]);
// Publish a deferred message to a topic
$producer->publish('topic', 'Deferred message', delay: 5000);
use Nsq\Consumer;
use Nsq\Message;
$consumer = Consumer::create(
address: 'tcp://nsqd:4150',
topic: 'topic',
channel: 'channel',
onMessage: static function (Message $message): Generator {
yield $message->touch(); // Reset the timeout for an in-flight message
yield $message->requeue(timeout: 5000); // Re-queue a message (indicate failure to process)
yield $message->finish(); // Finish a message (indicate successful processing)
},
);
use Nsq\Lookup;
use Nsq\Message;
$lookup = new Lookup('http://nsqlookupd0:4161');
$lookup = new Lookup(['http://nsqlookupd0:4161', 'http://nsqlookupd1:4161', 'http://nsqlookupd2:4161']);
$callable = static function (Message $message): Generator {
yield $message->touch(); // Reset the timeout for an in-flight message
yield $message->requeue(timeout: 5000); // Re-queue a message (indicate failure to process)
yield $message->finish(); // Finish a message (indicate successful processing)
};
$lookup->subscribe(topic: 'topic', channel: 'channel', onMessage: $callable);
$lookup->subscribe(topic: 'anotherTopic', channel: 'channel', onMessage: $callable);
$lookup->unsubscribe(topic: 'local', channel: 'channel');
$lookup->stop(); // unsubscribe all
The MIT License (MIT). Please see LICENSE
for more information.