2021-01-19 20:33:35 +03:00
2021-01-20 17:53:24 +03:00
2021-01-19 20:33:35 +03:00
2021-01-19 20:33:35 +03:00
2021-01-20 14:43:46 +03:00
2021-01-19 20:33:35 +03:00
2021-01-19 20:33:35 +03:00
2021-01-19 20:33:35 +03:00
2021-01-19 20:33:35 +03:00
2021-01-19 20:33:35 +03:00
2021-01-19 20:33:35 +03:00
2021-01-20 17:13:43 +03:00

Nsq PHP

A NSQ Client library for PHP.

Latest Stable Version Total Downloads Latest Unstable Version License codecov

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(true); // Gracefully close connection
    }
}

Integrations

License:

The MIT License (MIT). Please see LICENSE for more information.

Description
No description provided
Readme 363 KiB
Languages
PHP 95.9%
Dockerfile 3.7%
Makefile 0.4%