PHPackages                             solcloud/consumer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. solcloud/consumer

ActiveLibrary[Queues &amp; Workers](/categories/queues)

solcloud/consumer
=================

RabbitMQ base worker for queue consuming

v3.1(3y ago)2230MITPHPPHP &gt;= 7.1

Since Sep 27Pushed 3y ago1 watchersCompare

[ Source](https://github.com/solcloud/consumer)[ Packagist](https://packagist.org/packages/solcloud/consumer)[ RSS](/packages/solcloud-consumer/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (4)Dependencies (2)Versions (6)Used By (0)

Consumer
========

[](#consumer)

Consumer needs *AMQPChannel* channel as only dependency.

Channel setup
-------------

[](#channel-setup)

If you have channel instance in your project already than you can skip this, otherwise lets setup rabbitmq connection, we recommend to use container for this.

```
$config = new \Solcloud\Consumer\QueueConfig();
$config
    ->setHost('solcloud_rabbitmq')
    ->setVhost('/')
    #->setHeartbeatSec(5)
    ->setUsername('dev')
    ->setPassword('dev')
;
$connectionFactory = new \Solcloud\Consumer\QueueConnectionFactory($config);
$connection = $connectionFactory->createSocketConnection();
#(new \PhpAmqpLib\Connection\Heartbeat\PCNTLHeartbeatSender($connection))->register(); // if heartbeat and pcntl_async_signals() is available
```

Create channel from connection or use your own channel

```
/** @var \PhpAmqpLib\Channel\AMQPChannel $channel */
$channel = $connection->channel();
```

Worker
------

[](#worker)

Create *worker* (consumer) class for your business logic and inject *$channel* dependency. You can extend *AbstractConsumer* for lightweight abstraction or use "solcloud standard" *BaseConsumer*. We will use *BaseConsumer* in this example

```
$worker = new class($channel) extends \Solcloud\Consumer\BaseConsumer {

    protected function run(): void
    {
        // Your hard work here
        echo "Processing message: " . $this->data->id . PHP_EOL;
    }

};
```

Start consuming message from queue using blocking method *wait*

```
$worker->consume($consumeQueueName);
while ($worker->hasCallback()) {
    try {
        // While we have callback lets enter event loop with some timeout
        $worker->wait(rand(8, 11));
    } catch (\PhpAmqpLib\Exception\AMQPTimeoutException $ex) {
        echo $ex->getMessage() . PHP_EOL;
    }
}
$worker->closeChannel();
```

Message publishing
------------------

[](#message-publishing)

For message publish you can use *$worker* directly or use rabbitmq management plugin or different scripts

```
$worker->publishMessage(
    $worker->createMessageHelper([], ["id" => 1]),
    '',
    $consumeQueueName
); // OR open rabbitmq management and publish: {"meta":[],"data":{"id":1}}
```

Logging
-------

[](#logging)

Worker can log to `Psr\Log\LoggerInterface` compatible logger.

```
$worker->setLogger(new YourPsrLogger());
$worker->getLogger()->info('Something');
```

Examples
--------

[](#examples)

For complete example for this readme see [example.php](example.php)

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~105 days

Total

5

Last Release

1273d ago

Major Versions

v2.0.3 → v3.02022-02-23

### Community

Maintainers

![](https://www.gravatar.com/avatar/9e0e242163eae88198c915a9f34d9d18e4ac5c85b939e039189f91d918b242fe?d=identicon)[solcloud](/maintainers/solcloud)

---

Top Contributors

[![solcloud](https://avatars.githubusercontent.com/u/74121353?v=4)](https://github.com/solcloud "solcloud (17 commits)")

---

Tags

phprabbitmqqueuerabbitmqAMQPconsumerworkerAMQPLib

### Embed Badge

![Health badge](/badges/solcloud-consumer/health.svg)

```
[![Health](https://phpackages.com/badges/solcloud-consumer/health.svg)](https://phpackages.com/packages/solcloud-consumer)
```

###  Alternatives

[php-amqplib/rabbitmq-bundle

Integrates php-amqplib with Symfony &amp; RabbitMq. Formerly emag-tech-labs/rabbitmq-bundle, oldsound/rabbitmq-bundle.

1.3k20.1M65](/packages/php-amqplib-rabbitmq-bundle)[bschmitt/laravel-amqp

AMQP wrapper for Laravel and Lumen to publish and consume messages

2752.3M7](/packages/bschmitt-laravel-amqp)[enqueue/enqueue

Message Queue Library

19820.0M56](/packages/enqueue-enqueue)[swarrot/swarrot

A simple lib to consume RabbitMQ queues

3654.4M8](/packages/swarrot-swarrot)[prolic/humus-amqp

PHP-AMQP library with RabbitMQ Extensions

76205.4k5](/packages/prolic-humus-amqp)[kdyby/rabbitmq

Integrates php-amqplib with RabbitMq and Nette Framework

30693.1k4](/packages/kdyby-rabbitmq)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
