Skip to content

Commit 4f46e70

Browse files
authored
Merge pull request vyuldashev#160 from vyuldashev/configuration-refactoring
Configuration refactoring
2 parents 6b72ac9 + 6424462 commit 4f46e70

File tree

7 files changed

+143
-133
lines changed

7 files changed

+143
-133
lines changed

src/Queue/RabbitMQQueue.php

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,10 @@ class RabbitMQQueue extends Queue implements QueueContract
2020
*/
2121
const ATTEMPT_COUNT_HEADERS_KEY = 'attempts_count';
2222

23-
protected $declareExchange;
24-
protected $declareQueue;
25-
protected $declareBindQueue;
2623
protected $sleepOnError;
2724

28-
protected $defaultQueue;
29-
protected $queueParameters;
30-
protected $queueArguments;
31-
protected $configExchange;
25+
protected $queueOptions;
26+
protected $exchangeOptions;
3227

3328
private $declaredExchanges = [];
3429
private $declaredQueues = [];
@@ -43,13 +38,12 @@ class RabbitMQQueue extends Queue implements QueueContract
4338
public function __construct(AmqpContext $context, array $config)
4439
{
4540
$this->context = $context;
46-
$this->defaultQueue = $config['queue'];
47-
$this->queueParameters = $config['queue_params'];
48-
$this->queueArguments = isset($this->queueParameters['arguments']) ? json_decode($this->queueParameters['arguments'], true) : [];
49-
$this->configExchange = $config['exchange_params'];
50-
$this->declareExchange = $config['exchange_declare'];
51-
$this->declareQueue = $config['queue_declare'];
52-
$this->declareBindQueue = $config['queue_declare_bind'];
41+
42+
$this->queueOptions = $config['options']['queue'];
43+
$this->queueOptions['arguments'] = isset($this->queueOptions['arguments']) ? json_decode($this->queueOptions['arguments'], true) : [];
44+
45+
$this->exchangeOptions = $config['options']['exchange'];
46+
5347
$this->sleepOnError = $config['sleep_on_error'] ?? 5;
5448
}
5549

@@ -177,49 +171,49 @@ public function getContext(): AmqpContext
177171
*/
178172
private function declareEverything(string $queueName = null): array
179173
{
180-
$queueName = $queueName ?: $this->defaultQueue;
181-
$exchangeName = $this->configExchange['name'] ?: $queueName;
174+
$queueName = $queueName ?: $this->queueOptions['name'];
175+
$exchangeName = $this->exchangeOptions['name'] ?: $queueName;
182176

183177
$topic = $this->context->createTopic($exchangeName);
184-
$topic->setType($this->configExchange['type']);
185-
if ($this->configExchange['passive']) {
178+
$topic->setType($this->exchangeOptions['type']);
179+
if ($this->exchangeOptions['passive']) {
186180
$topic->addFlag(AmqpTopic::FLAG_PASSIVE);
187181
}
188-
if ($this->configExchange['durable']) {
182+
if ($this->exchangeOptions['durable']) {
189183
$topic->addFlag(AmqpTopic::FLAG_DURABLE);
190184
}
191-
if ($this->configExchange['auto_delete']) {
185+
if ($this->exchangeOptions['auto_delete']) {
192186
$topic->addFlag(AmqpTopic::FLAG_AUTODELETE);
193187
}
194188

195-
if ($this->declareExchange && !in_array($exchangeName, $this->declaredExchanges, true)) {
189+
if ($this->exchangeOptions['declare'] && !in_array($exchangeName, $this->declaredExchanges, true)) {
196190
$this->context->declareTopic($topic);
197191

198192
$this->declaredExchanges[] = $exchangeName;
199193
}
200194

201195
$queue = $this->context->createQueue($queueName);
202-
$queue->setArguments($this->queueArguments);
203-
if ($this->queueParameters['passive']) {
196+
$queue->setArguments($this->queueOptions['arguments']);
197+
if ($this->queueOptions['passive']) {
204198
$queue->addFlag(AmqpQueue::FLAG_PASSIVE);
205199
}
206-
if ($this->queueParameters['durable']) {
200+
if ($this->queueOptions['durable']) {
207201
$queue->addFlag(AmqpQueue::FLAG_DURABLE);
208202
}
209-
if ($this->queueParameters['exclusive']) {
203+
if ($this->queueOptions['exclusive']) {
210204
$queue->addFlag(AmqpQueue::FLAG_EXCLUSIVE);
211205
}
212-
if ($this->queueParameters['auto_delete']) {
206+
if ($this->queueOptions['auto_delete']) {
213207
$queue->addFlag(AmqpQueue::FLAG_AUTODELETE);
214208
}
215209

216-
if ($this->declareQueue && !in_array($queueName, $this->declaredQueues, true)) {
210+
if ($this->queueOptions['declare'] && !in_array($queueName, $this->declaredQueues, true)) {
217211
$this->context->declareQueue($queue);
218212

219213
$this->declaredQueues[] = $queueName;
220214
}
221215

222-
if ($this->declareBindQueue) {
216+
if ($this->queueOptions['bind']) {
223217
$this->context->bind(new AmqpBind($queue, $topic, $queue->getQueueName()));
224218
}
225219

tests/Functional/SendAndReceiveDelayedMessageTest.php

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,26 @@ public function test()
2727
'login' => 'guest',
2828
'password' => 'guest',
2929
'vhost' => '/',
30-
'queue' => 'queue_name',
31-
'exchange_declare' => true,
32-
'queue_declare' => true,
33-
'queue_declare_bind' => true,
34-
'queue_params' => [
35-
'passive' => false,
36-
'durable' => true,
37-
'exclusive' => false,
38-
'auto_delete' => false,
39-
'arguments' => null,
40-
],
41-
'exchange_params' => [
42-
'name' => null,
43-
'type' => AmqpTopic::TYPE_DIRECT,
44-
'passive' => false,
45-
'durable' => true,
46-
'auto_delete' => false,
30+
'options' => [
31+
'exchange' => [
32+
'name' => null,
33+
'declare' => true,
34+
'type' => \Interop\Amqp\AmqpTopic::TYPE_DIRECT,
35+
'passive' => false,
36+
'durable' => true,
37+
'auto_delete' => false,
38+
],
39+
40+
'queue' => [
41+
'name' => 'default',
42+
'declare' => true,
43+
'bind' => true,
44+
'passive' => false,
45+
'durable' => true,
46+
'exclusive' => false,
47+
'auto_delete' => false,
48+
'arguments' => '[]',
49+
],
4750
],
4851
'ssl_params' => [
4952
'ssl_on' => false,
@@ -63,7 +66,7 @@ public function test()
6366
// we need it to declare exchange\queue on RabbitMQ side.
6467
$queue->pushRaw('something');
6568

66-
$queue->getContext()->purgeQueue($queue->getContext()->createQueue('queue_name'));
69+
$queue->getContext()->purgeQueue($queue->getContext()->createQueue('default'));
6770

6871
$expectedPayload = __METHOD__.microtime(true);
6972

tests/Functional/SendAndReceiveMessageTest.php

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,26 @@ public function test()
2727
'login' => 'guest',
2828
'password' => 'guest',
2929
'vhost' => '/',
30-
'queue' => 'queue_name',
31-
'exchange_declare' => true,
32-
'queue_declare' => true,
33-
'queue_declare_bind' => true,
34-
'queue_params' => [
35-
'passive' => false,
36-
'durable' => true,
37-
'exclusive' => false,
38-
'auto_delete' => false,
39-
'arguments' => null,
40-
],
41-
'exchange_params' => [
42-
'name' => null,
43-
'type' => AmqpTopic::TYPE_DIRECT,
44-
'passive' => false,
45-
'durable' => true,
46-
'auto_delete' => false,
30+
'options' => [
31+
'exchange' => [
32+
'name' => null,
33+
'declare' => true,
34+
'type' => \Interop\Amqp\AmqpTopic::TYPE_DIRECT,
35+
'passive' => false,
36+
'durable' => true,
37+
'auto_delete' => false,
38+
],
39+
40+
'queue' => [
41+
'name' => 'default',
42+
'declare' => true,
43+
'bind' => true,
44+
'passive' => false,
45+
'durable' => true,
46+
'exclusive' => false,
47+
'auto_delete' => false,
48+
'arguments' => '[]',
49+
],
4750
],
4851
'ssl_params' => [
4952
'ssl_on' => false,
@@ -63,7 +66,7 @@ public function test()
6366
// we need it to declare exchange\queue on RabbitMQ side.
6467
$queue->pushRaw('something');
6568

66-
$queue->getContext()->purgeQueue($queue->getContext()->createQueue('queue_name'));
69+
$queue->getContext()->purgeQueue($queue->getContext()->createQueue('default'));
6770

6871
$expectedPayload = __METHOD__.microtime(true);
6972

tests/Functional/SslConnectionTest.php

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,25 +26,26 @@ public function testConnectorEstablishSecureConnectionWithRabbitMQBroker()
2626
'login' => 'guest',
2727
'password' => 'guest',
2828
'vhost' => '/',
29+
'options' => [
30+
'exchange' => [
31+
'name' => null,
32+
'declare' => true,
33+
'type' => \Interop\Amqp\AmqpTopic::TYPE_DIRECT,
34+
'passive' => false,
35+
'durable' => true,
36+
'auto_delete' => false,
37+
],
2938

30-
'queue' => 'queue_name',
31-
'exchange_declare' => true,
32-
'queue_declare' => true,
33-
'queue_declare_bind' => true,
34-
35-
'queue_params' => [
36-
'passive' => false,
37-
'durable' => true,
38-
'exclusive' => false,
39-
'auto_delete' => false,
40-
'arguments' => null,
41-
],
42-
'exchange_params' => [
43-
'name' => null,
44-
'type' => AmqpTopic::TYPE_DIRECT,
45-
'passive' => false,
46-
'durable' => true,
47-
'auto_delete' => false,
39+
'queue' => [
40+
'name' => 'default',
41+
'declare' => true,
42+
'bind' => true,
43+
'passive' => false,
44+
'durable' => true,
45+
'exclusive' => false,
46+
'auto_delete' => false,
47+
'arguments' => '[]',
48+
],
4849
],
4950
'ssl_params' => [
5051
'ssl_on' => true,

tests/Functional/StreamConnectionTest.php

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,26 @@ public function testConnectorEstablishSecureConnectionWithRabbitMQBroker()
2626
'login' => 'guest',
2727
'password' => 'guest',
2828
'vhost' => '/',
29-
'queue' => 'queue_name',
30-
'exchange_declare' => true,
31-
'queue_declare' => true,
32-
'queue_declare_bind' => true,
33-
'queue_params' => [
34-
'passive' => false,
35-
'durable' => true,
36-
'exclusive' => false,
37-
'auto_delete' => false,
38-
'arguments' => null,
39-
],
40-
'exchange_params' => [
41-
'name' => null,
42-
'type' => AmqpTopic::TYPE_DIRECT,
43-
'passive' => false,
44-
'durable' => true,
45-
'auto_delete' => false,
29+
'options' => [
30+
'exchange' => [
31+
'name' => null,
32+
'declare' => true,
33+
'type' => \Interop\Amqp\AmqpTopic::TYPE_DIRECT,
34+
'passive' => false,
35+
'durable' => true,
36+
'auto_delete' => false,
37+
],
38+
39+
'queue' => [
40+
'name' => 'default',
41+
'declare' => true,
42+
'bind' => true,
43+
'passive' => false,
44+
'durable' => true,
45+
'exclusive' => false,
46+
'auto_delete' => false,
47+
'arguments' => '[]',
48+
],
4649
],
4750
'ssl_params' => [
4851
'ssl_on' => false,

tests/Queue/Connectors/RabbitMQConnectorTest.php

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -166,23 +166,26 @@ private function createDummyConfig()
166166
'local_key' => 'theLocalKey',
167167
'passphrase' => 'thePassPhrase',
168168
],
169-
'queue' => 'aQueueName',
170-
'exchange_declare' => false,
171-
'queue_declare' => false,
172-
'queue_declare_bind' => false,
173-
'queue_params' => [
174-
'passive' => false,
175-
'durable' => true,
176-
'exclusive' => false,
177-
'auto_delete' => false,
178-
'arguments' => '[]',
179-
],
180-
'exchange_params' => [
181-
'name' => 'anExchangeName',
182-
'type' => 'direct',
183-
'passive' => false,
184-
'durable' => true,
185-
'auto_delete' => false,
169+
'options' => [
170+
'exchange' => [
171+
'name' => 'anExchangeName',
172+
'declare' => false,
173+
'type' => \Interop\Amqp\AmqpTopic::TYPE_DIRECT,
174+
'passive' => false,
175+
'durable' => true,
176+
'auto_delete' => false,
177+
],
178+
179+
'queue' => [
180+
'name' => 'aQueueName',
181+
'declare' => false,
182+
'bind' => false,
183+
'passive' => false,
184+
'durable' => true,
185+
'exclusive' => false,
186+
'auto_delete' => false,
187+
'arguments' => '[]',
188+
],
186189
],
187190
'sleep_on_error' => env('RABBITMQ_ERROR_SLEEP', 5),
188191
];

tests/Queue/RabbitMQQueueTest.php

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -481,23 +481,26 @@ private function createDummyConfig()
481481
'local_cert' => 'aLocalCert',
482482
'local_key' => 'aLocalKey',
483483
],
484-
'queue' => 'aQueueName',
485-
'exchange_declare' => false,
486-
'queue_declare' => false,
487-
'queue_declare_bind' => false,
488-
'queue_params' => [
489-
'passive' => false,
490-
'durable' => true,
491-
'exclusive' => false,
492-
'auto_delete' => false,
493-
'arguments' => '[]',
494-
],
495-
'exchange_params' => [
496-
'name' => 'anExchangeName',
497-
'type' => 'direct',
498-
'passive' => false,
499-
'durable' => true,
500-
'auto_delete' => false,
484+
'options' => [
485+
'exchange' => [
486+
'name' => 'anExchangeName',
487+
'declare' => false,
488+
'type' => \Interop\Amqp\AmqpTopic::TYPE_DIRECT,
489+
'passive' => false,
490+
'durable' => true,
491+
'auto_delete' => false,
492+
],
493+
494+
'queue' => [
495+
'name' => 'aQueueName',
496+
'declare' => false,
497+
'bind' => false,
498+
'passive' => false,
499+
'durable' => true,
500+
'exclusive' => false,
501+
'auto_delete' => false,
502+
'arguments' => '[]',
503+
],
501504
],
502505
'sleep_on_error' => false,
503506
];

0 commit comments

Comments
 (0)