Skip to content

Commit 738a1d9

Browse files
authored
[6.x] Added queue suffix for SQS driver (#31784)
When using multiple queues and environments it is hard to use different queues per environment (especially when using laravel vapor). This PR allows suffixing the queue names by optionally adding a suffix entry to the SQS config in queue.php.
1 parent 6497a84 commit 738a1d9

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

src/Illuminate/Queue/Connectors/SqsConnector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function connect(array $config)
2323
}
2424

2525
return new SqsQueue(
26-
new SqsClient($config), $config['queue'], $config['prefix'] ?? ''
26+
new SqsClient($config), $config['queue'], $config['prefix'] ?? '', $config['suffix'] ?? ''
2727
);
2828
}
2929

src/Illuminate/Queue/SqsQueue.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,28 @@ class SqsQueue extends Queue implements QueueContract
2929
*/
3030
protected $prefix;
3131

32+
/**
33+
* The queue name suffix.
34+
*
35+
* @var string
36+
*/
37+
private $suffix;
38+
3239
/**
3340
* Create a new Amazon SQS queue instance.
3441
*
3542
* @param \Aws\Sqs\SqsClient $sqs
3643
* @param string $default
3744
* @param string $prefix
45+
* @param string $suffix
3846
* @return void
3947
*/
40-
public function __construct(SqsClient $sqs, $default, $prefix = '')
48+
public function __construct(SqsClient $sqs, $default, $prefix = '', $suffix = '')
4149
{
4250
$this->sqs = $sqs;
4351
$this->prefix = $prefix;
4452
$this->default = $default;
53+
$this->suffix = $suffix;
4554
}
4655

4756
/**
@@ -140,7 +149,8 @@ public function getQueue($queue)
140149
$queue = $queue ?: $this->default;
141150

142151
return filter_var($queue, FILTER_VALIDATE_URL) === false
143-
? rtrim($this->prefix, '/').'/'.$queue : $queue;
152+
? rtrim($this->prefix, '/').'/'.$queue.$this->suffix
153+
: $queue;
144154
}
145155

146156
/**

tests/Queue/QueueSqsQueueTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,4 +145,12 @@ public function testGetQueueProperlyResolvesUrlWithoutPrefix()
145145
$queueUrl = $this->baseUrl.'/'.$this->account.'/test';
146146
$this->assertEquals($queueUrl, $queue->getQueue($queueUrl));
147147
}
148+
149+
public function testGetQueueProperlyResolvesUrlWithSuffix()
150+
{
151+
$queue = new SqsQueue($this->sqs, $this->queueName, $this->prefix, $suffix = '-staging');
152+
$this->assertEquals($this->queueUrl.$suffix, $queue->getQueue(null));
153+
$queueUrl = $this->baseUrl.'/'.$this->account.'/test'.$suffix;
154+
$this->assertEquals($queueUrl, $queue->getQueue('test'));
155+
}
148156
}

0 commit comments

Comments
 (0)