Data source: Beanstalk

Table of Contents 


Beanstalkd is a message queue server, which on the one hand registers processing orders, and on the other hand retrieves these orders for processing.

If you have correctly configured the Beanstalkd connection parameters, Temma automatically creates an object of type \Temma\Datasources\Beanstalk. By convention, we'll assume that you've named this connection beanstalk in the temma.json file (see configuration documentation).

The connection is then available in the controller by writing:


In other objects managed by the dependency injection component, the Beanstalkd connection is accessible by writing:



To connect to a Beanstalk server, you need to install the Pheanstalk library. To do this, you can use the Composer dependency manager.

At the root of the project, create the following composer.json file:

    "require": {
        "pda/pheanstalk": "v5.x-dev"

Next, run the following command: composer update


In the temma.json file (see configuration documentation), you declare the DSN (Data Source Name) used to connect to the Beanstalkd server.

The DSN used to connect to the Beanstalkd server is written as: beanstalk://SERVER[:PORT]/TUBE_NAME
The default port number is 11300.
Example: beanstalk://localhost/tube3

Specific features of message queues

Unlike other data sources, messages are added to a message queue without providing an identifier (name, key, path, etc.). The identifier is created automatically by Beanstalkd. When a message is read, its identifier is returned along with its data; this identifier is subsequently used to delete the message from the queue.

Consequently, Beanstalkd does not allow you to check the existence of a message based on its identifier, nor to select a message, nor to define a default value when retrieving a message.

Unified calls

Array-type access

// write a message (serialized)
$this->beanstalk[''] = $data;

// read a message (deserialized)
$msg = $this->beanstalk[''];
// returns an associative array with the "id" and "data" keys

// delete a message

// waiting messages count
$nbr = count($this->beanstalk);

General methods

// delete a message

Management of complex serialized data

// read a message (deserialized)
$msg = $this->beanstalk->get('');
// returns an associative array with the "id" and "data" keys

// write a message (serialized)
$this->beanstalk->set('', $msgData);

// write multiple messages (serialized)

Raw data management

// read a message (raw)
$html = $this->beanstalk->read('');
// returns an associative array with the "id" and "data" keys

// write a message (raw)
$this->beanstalk->write('', $msgData);

// write multiple messages (raw)

// write a message (raw) from a local file
$this->beanstalk->copyTo('', '/path/to/file');

// write multiple messages (raw) from local files

Specific calls

touch(string $id) : \Temma\Datasources\Beanstalk

This method tells the Beanstalkd server that the message is still being processed, thus preventing it from being distributed again.

// retrieve the next message to be processed
$msg = $this->beanstalk->get('');

// processing...

// tells the server that processing is still in progress

// further processing...

// delete the message
Previous: SQS
Next: Smsmode

Table of Contents