From e3c478b04963e2d30402b2259b3f1faa3af8da8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Viktor=20Ma=C5=A1=C3=AD=C4=8Dek?= Date: Tue, 23 Jun 2026 10:54:32 +0200 Subject: [PATCH 1/2] Implement label-specific DIE queues for targeted consumer restart - Add Manager methods getTopPriorityName() and includeTopPriority() to support per-label DIE queues (e.g., 0_worker) - Update Consumer and Producer interfaces to accept optional consumerLabel parameter - Add -l/--label option to consume and reload-consumers commands - Enhance reload-consumers to send DIE per label with -l option (e.g., -l label1,label2) while maintaining backward compatibility (number of DIE messages per label/queue) - Update Producer helper signatures to match interface changes - Add comprehensive unit and integration tests for label queue naming and reload logic - Update README and CLAUDE.md with new functionality and usage guidance --- CLAUDE.md | 6 +- README.md | 5 +- src/Broker/Consumer.php | 2 +- src/Broker/PhpAmqpLib/Consumer.php | 5 +- src/Broker/PhpAmqpLib/Manager.php | 34 ++++++- src/Broker/PhpAmqpLib/Producer.php | 6 +- src/Broker/Producer.php | 4 +- src/Console/ConsumeCommand.php | 4 +- src/Console/ReloadConsumersCommand.php | 24 ++++- tests/Integration/ManagerTest.php | 72 ++++++++++++++ .../ReloadConsumersCommandTest.php | 96 +++++++++++++++++++ tests/Support/Helper/Producer.php | 6 +- 12 files changed, 242 insertions(+), 22 deletions(-) create mode 100644 tests/Integration/ManagerTest.php create mode 100644 tests/Integration/ReloadConsumersCommandTest.php diff --git a/CLAUDE.md b/CLAUDE.md index 966a449..d45e1cb 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -88,15 +88,15 @@ Joby sdílející `serialGroup` běží striktně v pořadí podle ID. `checkUnf ### Brokerová abstrakce (src/Broker/) -`Producer` a `Consumer` jsou rozhraní - přines si libovolný broker. K dispozici je hotová implementace `PhpAmqpLib` (volitelná závislost; viz README pro doporučené omezení `conflict` pinující `php-amqplib` na `^3.0`). Priorita je modelována jako **samostatné fronty** pojmenované `_`; `QUEUE_TOP_PRIORITY = 0` je vyhrazena pro řídicí (DIE) zprávy, takže ji konzumeři kontrolují jako první. `publishDie()` + tělo `DIE` je způsob, jak `reload-consumers` elegantně restartuje běžící konzumery. +`Producer` a `Consumer` jsou rozhraní - přines si libovolný broker. K dispozici je hotová implementace `PhpAmqpLib` (volitelná závislost; viz README pro doporučené omezení `conflict` pinující `php-amqplib` na `^3.0`). Priorita je modelována jako **samostatné fronty** pojmenované `_`; `QUEUE_TOP_PRIORITY = 0` je vyhrazena pro řídicí (DIE) zprávy, takže ji konzumeři kontrolují jako první. `publishDie()` + tělo `DIE` je způsob, jak `reload-consumers` elegantně restartuje běžící konzumery. Konzumer spuštěný s **labelem** (`consume -l