99use PhpAmqpLib \Connection \AbstractConnection ;
1010use PhpAmqpLib \Wire \AMQPTable ;
1111use RabbitMqModule \Options \Exchange as ExchangeOptions ;
12+ use RabbitMqModule \Options \Qos ;
1213use RabbitMqModule \Options \Queue as QueueOptions ;
1314use RabbitMqModule \Service \SetupFabricAwareInterface ;
1415
1516abstract class BaseAmqp implements SetupFabricAwareInterface
1617{
1718 protected AbstractConnection $ connection ;
1819
20+ protected ?Qos $ qos = null ;
21+
1922 private ?AMQPChannel $ channel = null ;
2023
2124 protected ?QueueOptions $ queueOptions = null ;
@@ -28,31 +31,65 @@ abstract class BaseAmqp implements SetupFabricAwareInterface
2831
2932 protected bool $ queueDeclared = false ;
3033
31- public function __construct (AbstractConnection $ connection, AMQPChannel $ channel = null )
34+ public function __construct (AbstractConnection $ connection )
3235 {
3336 $ this ->connection = $ connection ;
34- $ this ->channel = $ channel ;
3537 }
3638
39+ /**
40+ * @internal
41+ *
42+ * @psalm-internal RabbitMqModule
43+ */
3744 public function getConnection (): AbstractConnection
3845 {
3946 return $ this ->connection ;
4047 }
4148
49+ /**
50+ * @internal
51+ *
52+ * @psalm-internal RabbitMqModule
53+ */
4254 public function getChannel (): AMQPChannel
4355 {
44- if (! $ this ->channel ) {
45- $ this ->channel = $ this ->getConnection ()->channel ();
56+ if ($ this ->channel ) {
57+ return $ this ->channel ;
58+ }
59+
60+ $ this ->channel = $ this ->getConnection ()->channel ();
61+
62+ if ($ this ->qos ) {
63+ $ this ->channel ->basic_qos (
64+ $ this ->qos ->getPrefetchSize (),
65+ $ this ->qos ->getPrefetchCount (),
66+ false
67+ );
4668 }
4769
4870 return $ this ->channel ;
4971 }
5072
73+ public function setQos (?Qos $ qos ): void
74+ {
75+ $ this ->qos = $ qos ;
76+ }
77+
78+ /**
79+ * @internal
80+ *
81+ * @psalm-internal RabbitMqModule
82+ */
5183 public function setChannel (AMQPChannel $ channel ): void
5284 {
5385 $ this ->channel = $ channel ;
5486 }
5587
88+ /**
89+ * @internal
90+ *
91+ * @psalm-internal RabbitMqModule
92+ */
5693 public function getQueueOptions (): ?QueueOptions
5794 {
5895 return $ this ->queueOptions ;
@@ -63,6 +100,11 @@ public function setQueueOptions(?QueueOptions $queueOptions): void
63100 $ this ->queueOptions = $ queueOptions ;
64101 }
65102
103+ /**
104+ * @internal
105+ *
106+ * @psalm-internal RabbitMqModule
107+ */
66108 public function getExchangeOptions (): ?ExchangeOptions
67109 {
68110 return $ this ->exchangeOptions ;
@@ -73,6 +115,11 @@ public function setExchangeOptions(?ExchangeOptions $exchangeOptions): void
73115 $ this ->exchangeOptions = $ exchangeOptions ;
74116 }
75117
118+ /**
119+ * @internal
120+ *
121+ * @psalm-internal RabbitMqModule
122+ */
76123 public function isAutoSetupFabricEnabled (): bool
77124 {
78125 return $ this ->autoSetupFabricEnabled ;
@@ -195,6 +242,10 @@ public function setupFabric(): void
195242
196243 /**
197244 * Reconnect
245+ *
246+ * @internal
247+ *
248+ * @psalm-internal RabbitMqModule
198249 */
199250 public function reconnect (): void
200251 {
0 commit comments