Queue

Some activities that GNU social can do, like broadcasting with OStatus or ActivityPub, XMPP messages and SMS operations, can be 'queued' and done by asynchronous daemons instead.

Running Queues

Run the queue handler with:

php bin/console messenger:consume async --limit=10 --memory-limit=128M --time-limit=3600

GNU social uses Symfony, therefore the documentation on queues might be useful.

Definitions

  • Message - A Message holds the data to be handled (a variable) and the queue name (a string).
  • QueueHandler - A QueueHandler is an event listener that expects to receive data from the queue.
  • Enqueuer - An Enqueuer is any arbitrary code that wishes to send data to a queue.
  • Transporter - The Transporter is given a Message by an Enqueuer. The Transporter is responsible for ensuring that the Message is passed to all relevant QueueHandlers.

Using Queues

Queues are akin to events.

In your plugin you can call App\Core\Queue::enqueue and send a message to be handled by the queue:

Queue::enqueue($hello_world, 'MyFirstQueue');

and then receive with:

public function onMyFirstQueue($data): bool
{
    // Do something with $data
    return Event::next;
}

GNU social comes with a set of core queues with often wanted data: TODO Elaborate.