Use the power of RabbitMQ in your e-commerce running with Magento 2.

dev-master 2017-12-17 17:32 UTC

This package is auto-updated.

Last update: 2021-12-29 02:41:15 UTC


Use the power of RabbitMQ in your e-commerce running with Magento 2.


With composer: composer require monsieurbiz/amqp.

If you want to use delayed messages then you'll have to install the [Delayed Message Plugin][] on your RabbitMQ instance.

Create an exchange

magento monsieurbiz:amqp:exchange:create consume-me

With consume-me as exchange name.

You can also use a delayed exchange:

magento monsieurbiz:amqp:exchange:create --delayed consume-me

You can create multiple exchange at once:

magento monsieurbiz:amqp:exchange:create first-exchange-name second-exchange-name

Consume a queue

You have to create a consumer/worker.

Take a look at Console/Command/SampleCommand.php, it is a basic consumer.

Send a message in an exchange

Considering that $amqp is an instance of \MonsieurBiz\Amqp\Helper\Amqp.

Direct message

    ['my message content']

Delayed message

You need to install the Delayed Message Plugin on your RabbitMQ instance.

    ['my message content'],
        'application_headers' => new AMQPTable([
            'x-delay' => 5000 // 5 seconds of delay


Considering that $rpc is an instance of \MonsieurBiz\Amqp\Helper\Rpc.

Direct request

To send a request to the broker and get a response right away:

$response = $rpc->directRequest(
    ['my message content']

echo $response; // ["my message content"]

Batch messages

Before sending a batch, you should be aware on how RPC works.

Don't forget to keep the correlation identifier of every request you make.

$c1 = $rpc->request('consume-me', ['my first message']);
$c2 = $rpc->request('consume-me', ['my second message']);

$responses = $rpc->getResponses();

var_dump($responses[$c1]); // string(20) "["my first message"]"
var_dump($responses[$c2]); // string(21) "["my second message"]"

More you have consumers running faster you'll get the responses.


(c) Monsieur Biz

For the full copyright and license information, please view the LICENSE file that was distributed with this source code.