# 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.