PHPackages                             haltuf/rabbitmq - 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. haltuf/rabbitmq

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

haltuf/rabbitmq
===============

Lightweight RabbitMQ integration for Nette Framework on top of php-amqplib. Seamless switch from the abandoned contributte/rabbitmq.

v0.1.1(2mo ago)01.5k↓74.4%MITPHPPHP ^8.3CI passing

Since Apr 11Pushed 2mo agoCompare

[ Source](https://github.com/haltuf/rabbitmq)[ Packagist](https://packagist.org/packages/haltuf/rabbitmq)[ RSS](/packages/haltuf-rabbitmq/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (10)Versions (3)Used By (0)

haltuf/rabbitmq
===============

[](#haltufrabbitmq)

Odlehčená RabbitMQ integrace pro [Nette Framework](https://nette.org) postavená nad [`php-amqplib/php-amqplib`](https://github.com/php-amqplib/php-amqplib).

Proč tento balíček
------------------

[](#proč-tento-balíček)

- **Seamless switch z `contributte/rabbitmq`.** Konfigurační formát i veřejné API jsou záměrně drženy kompatibilně — migrace existující aplikace zabere řádově deset minut (detaily v sekci [Migrace z contributte/rabbitmq](#migrace-z-contributterabbitmq)).
- **Kompatibilita s PHP 8.4+.** `contributte/rabbitmq` závisí na `bunny/bunny`, který nad `react/promise` v2 generuje deprecation errory a není aktivně udržován. Tento balíček běží nad `php-amqplib` v3, který je pod oficiální RabbitMQ organizací a podporuje aktuální PHP.
- **Autor balíček aktivně používá ve vlastních produkčních projektech**, takže opravy chyb a kompatibilita s novými verzemi PHP a Nette jsou motivovány skutečnou potřebou.
- Minimum závislostí, žádné skryté abstrakce.

Obsah
-----

[](#obsah)

- [Instalace](#instalace)
- [Registrace rozšíření](#registrace-roz%C5%A1%C3%AD%C5%99en%C3%AD)
- [Konfigurace](#konfigurace)
- [Použití](#pou%C5%BEit%C3%AD)
    - [Producer](#producer)
    - [Consumer](#consumer)
    - [BulkConsumer](#bulkconsumer)
- [Konzolové příkazy](#konzolov%C3%A9-p%C5%99%C3%ADkazy)
- [Tracy bar panel](#tracy-bar-panel)
- [Migrace z contributte/rabbitmq](#migrace-z-contributterabbitmq)

Instalace
---------

[](#instalace)

```
composer require haltuf/rabbitmq
```

Vyžaduje PHP 8.3+ a běžící RabbitMQ server.

Registrace rozšíření
--------------------

[](#registrace-rozšíření)

V souboru `config.neon`:

```
extensions:
	rabbitmq: Haltuf\RabbitMQ\DI\RabbitMQExtension
```

Konfigurace
-----------

[](#konfigurace)

```
rabbitmq:
	connections:
		default:
			host: 127.0.0.1
			port: 5672
			user: guest
			password: guest
			vhost: /
			heartbeat: 60
			timeout: 1
			lazy: false

	queues:
		eventQueue:
			connection: default
			durable: true
			arguments:
				x-dead-letter-exchange: events-dlx

	producers:
		eventProducer:
			queue: eventQueue
			contentType: application/json
			deliveryMode: 2

	consumers:
		eventConsumer:
			queue: eventQueue
			callback: [@App\Consumers\EventHandler, consume]
			qos:
				prefetchCount: 10
			bulk:
				size: 50
				timeout: 5
```

### Connection options

[](#connection-options)

KlíčVýchozíPopis`host``127.0.0.1`Hostname RabbitMQ serveru`port``5672`Port`user``guest`Uživatel`password``guest`Heslo`vhost``/`Virtual host`heartbeat``60`Heartbeat interval v sekundách`timeout``1`Connection timeout v sekundách`lazy``false`Pokud `true`, připojení se navazuje až při prvním použití### Queue options

[](#queue-options)

KlíčVýchozíPopis`connection``default`Jméno connection`passive``false`Pasivní deklarace (jen kontrola existence)`durable``true`Persistentní fronta`exclusive``false`Exkluzivní přístup`autoDelete``false`Automatické mazání`noWait``false`Neblokující deklarace`arguments``[]`AMQP argumenty (např. `x-dead-letter-exchange`, `x-message-ttl`)### Producer options

[](#producer-options)

KlíčVýchozíPopis`queue`—Jméno fronty (povinné)`contentType``text/plain`MIME type`deliveryMode``2``1` = non-persistent, `2` = persistent### Consumer options

[](#consumer-options)

KlíčVýchozíPopis`queue`—Jméno fronty (povinné)`callback`—Callable (povinné); pro bulk dostává `Message[]` indexované podle `deliveryTag`, jinak jednu `Message``qos.prefetchSize``null`QoS prefetch size`qos.prefetchCount``null`QoS prefetch count`bulk.size``null`Maximální velikost batch. Pokud je vyplněno, použije se `BulkConsumer`.`bulk.timeout``null`Flush timeout v sekundáchPoužití
-------

[](#použití)

### Producer

[](#producer)

```
use Haltuf\RabbitMQ\Client;

final class EventDispatcher
{
	public function __construct(
		private readonly Client $rabbitClient,
	) {}

	public function dispatch(array $event): void
	{
		$this->rabbitClient->getProducer('eventProducer')->publish(
			json_encode($event),
			['x-source' => 'api'],
		);
	}
}
```

### Consumer

[](#consumer)

Consumer callback dostává instanci `Haltuf\RabbitMQ\Consumer\Message` a musí vrátit jednu z konstant `IConsumer::MESSAGE_*`:

```
use Haltuf\RabbitMQ\Consumer\IConsumer;
use Haltuf\RabbitMQ\Consumer\Message;

final class EventHandler
{
	public function consume(Message $message): int
	{
		$data = json_decode($message->content, true);

		try {
			$this->processEvent($data);
			return IConsumer::MESSAGE_ACK;
		} catch (\Throwable) {
			return IConsumer::MESSAGE_REJECT;
		}
	}
}
```

Dostupné výsledky:

KonstantaChování`MESSAGE_ACK`Potvrdit zprávu`MESSAGE_NACK`Vrátit zpět do fronty (requeue)`MESSAGE_REJECT`Zahodit (případně routovat do DLX, pokud je nakonfigurován)`MESSAGE_ACK_AND_TERMINATE`Potvrdit a ukončit consumer loop`MESSAGE_REJECT_AND_TERMINATE`Zahodit a ukončit consumer loop### BulkConsumer

[](#bulkconsumer)

Pokud v configu vyplníš `bulk.size`, consumer dostává vždy pole zpráv indexované podle `deliveryTag` a musí vrátit asociativní pole `deliveryTag => status`:

```
public function consume(array $messages): array
{
	$result = [];
	foreach ($messages as $deliveryTag => $message) {
		$result[$deliveryTag] = $this->process($message)
			? IConsumer::MESSAGE_ACK
			: IConsumer::MESSAGE_REJECT;
	}
	return $result;
}
```

Konzolové příkazy
-----------------

[](#konzolové-příkazy)

Balíček registruje tři Symfony Console příkazy:

PříkazPopis`rabbitmq:consumer  [secondsToLive]`Spustí consumer; pokud je `secondsToLive` nastaveno, běží max uvedenou dobu`rabbitmq:staticConsumer  `Spustí consumer a ukončí se po zpracování daného počtu zpráv`rabbitmq:declareQueuesAndExchanges`Deklaruje všechny fronty z configu; volá se typicky v deploy pipelineTracy bar panel
---------------

[](#tracy-bar-panel)

`Haltuf\RabbitMQ\Diagnostics\BarPanel` zobrazuje v Tracy debug baru ikonku, počet odeslaných zpráv a přehled payloadů per producer. Vyžaduje [`tracy/tracy`](https://github.com/nette/tracy) (typicky `composer require --dev tracy/tracy`).

Registrace v `config.neon` (typicky pouze v development konfiguraci):

```
tracy:
	bar:
		- Haltuf\RabbitMQ\Diagnostics\BarPanel
```

Maximální počet zobrazených zpráv lze upravit přes statickou property `BarPanel::$displayCount` (výchozí `100`, hodnota `0` znamená neomezeně). V dlouhoběžících procesech (CLI, workery) hodnotu `0` nepoužívej — pole sebraných payloadů by rostlo bez omezení.

Migrace z `contributte/rabbitmq`
--------------------------------

[](#migrace-z-contributterabbitmq)

Balíček je navržen jako přímá náhrada — API a konfigurace jsou záměrně drženy kompatibilně. Migrace má tři kroky:

**1. Výměna composer závislosti**

```
composer remove contributte/rabbitmq
composer require haltuf/rabbitmq
```

**2. Přejmenování rozšíření v `config.neon`**

```
 extensions:
-	rabbitmq: Contributte\RabbitMQ\DI\RabbitMQExtension
+	rabbitmq: Haltuf\RabbitMQ\DI\RabbitMQExtension
```

Konfigurační bloky (`connections`, `queues`, `producers`, `consumers`) zůstávají beze změny.

**3. Přejmenování namespace v aplikačním kódu**

Ve všech souborech najdi a nahraď:

```
-use Contributte\RabbitMQ\
+use Haltuf\RabbitMQ\
```

Rename se týká **všech souborů, které importují jakoukoli třídu nebo konstantu z `Contributte\RabbitMQ\`** — typicky consumer handlery (`IConsumer` konstanty), ale i služby, presentery a event dispatchery, které mají typovaný `Client` pro publikování zpráv. V reálném Nette projektu střední velikosti jde řádově o **10–15 souborů**. Najdi všechny výskyty:

```
grep -rlF 'use Contributte\RabbitMQ' app/ src/ bin/
```

DI container konfigurace (`config.neon`) a runtime publish volání přes `$client->getProducer('name')->publish(...)` jsou namespace-agnostická a žádné změny nevyžadují.

### Drobné rozdíly

[](#drobné-rozdíly)

- Contributte používalo `bunny/bunny`, tento balíček používá `php-amqplib`. Výsledné AMQP framy jsou identické, ale pokud jsi sahal přímo do bunny interních objektů (např. přes reflexi), budeš muset přepsat.
- `Message` DTO má pevné pole: `content`, `deliveryTag`, `routingKey`, `headers`, `redelivered`, `exchange`, `consumerTag`. Pokud jsi z contributte-messagové objekty tahal přes `get('application_headers')`, teď máš rovnou `$message->headers`.

Licence
-------

[](#licence)

MIT — viz [LICENSE](LICENSE).

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance83

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity40

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 ~17 days

Total

2

Last Release

87d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/325759?v=4)[Michal Haltuf](/maintainers/haltuf)[@haltuf](https://github.com/haltuf)

---

Top Contributors

[![haltuf](https://avatars.githubusercontent.com/u/325759?v=4)](https://github.com/haltuf "haltuf (7 commits)")

---

Tags

nettequeuerabbitmqmessagingAMQPphp-amqplib

###  Code Quality

Static AnalysisPHPStan

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/haltuf-rabbitmq/health.svg)

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

###  Alternatives

[php-amqplib/rabbitmq-bundle

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

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

AMQP wrapper for Laravel and Lumen to publish and consume messages

2822.5M7](/packages/bschmitt-laravel-amqp)[bunny/bunny

Performant pure-PHP AMQP (RabbitMQ) non-blocking ReactPHP library

7466.8M46](/packages/bunny-bunny)[kdyby/rabbitmq

Integrates php-amqplib with RabbitMq and Nette Framework

30721.3k4](/packages/kdyby-rabbitmq)[enqueue/enqueue-bundle

Message Queue Bundle

27716.0M43](/packages/enqueue-enqueue-bundle)[enqueue/enqueue

Message Queue Library

19820.7M63](/packages/enqueue-enqueue)

PHPackages © 2026

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