22
33namespace OldSound \RabbitMqBundle \RabbitMq ;
44
5+ use OldSound \RabbitMqBundle \Provider \QueuesProviderInterface ;
56use OldSound \RabbitMqBundle \RabbitMq \Exception \QueueNotFoundException ;
67use PhpAmqpLib \Message \AMQPMessage ;
78
89class MultipleConsumer extends Consumer
910{
1011 protected $ queues = array ();
1112
13+ /**
14+ * Queues provider
15+ *
16+ * @var QueuesProviderInterface
17+ */
18+ protected $ queuesProvider = null ;
19+
20+ /**
21+ * QueuesProvider setter
22+ *
23+ * @param QueuesProviderInterface $queuesProvider
24+ *
25+ * @return self
26+ */
27+ public function setQueuesProvider (QueuesProviderInterface $ queuesProvider )
28+ {
29+ $ this ->queuesProvider = $ queuesProvider ;
30+ return $ this ;
31+ }
32+
1233 public function getQueueConsumerTag ($ queue )
1334 {
1435 return sprintf ('%s-%s ' , $ this ->getConsumerTag (), $ queue );
@@ -21,6 +42,8 @@ public function setQueues(array $queues)
2142
2243 protected function setupConsumer ()
2344 {
45+ $ this ->mergeQueues ();
46+
2447 if ($ this ->autoSetupFabric ) {
2548 $ this ->setupFabric ();
2649 }
@@ -72,4 +95,17 @@ public function stopConsuming()
7295 $ this ->getChannel ()->basic_cancel ($ this ->getQueueConsumerTag ($ name ));
7396 }
7497 }
98+
99+ /**
100+ * Merges static and provided queues into one array
101+ */
102+ protected function mergeQueues ()
103+ {
104+ if ($ this ->queuesProvider ) {
105+ $ this ->queues = array_merge (
106+ $ this ->queues ,
107+ $ this ->queuesProvider ->getQueues ()
108+ );
109+ }
110+ }
75111}
0 commit comments