Skip to content

Commit 6f998c7

Browse files
authored
Merge pull request #1 from rpkamp/feature/sqs-connection-factory-client
Use client defined in configuration in SqsConnectionFactory
2 parents 087eeb5 + ef73c0a commit 6f998c7

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

Diff for: pkg/enqueue-bundle/Tests/Functional/App/config/custom-config.yml

+11
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,14 @@ services:
3333
public: true
3434
tags:
3535
- { name: 'enqueue.client.processor' }
36+
37+
test.sqs_client:
38+
public: true
39+
class: Aws\Sqs\SqsClient
40+
arguments:
41+
-
42+
region: '%env(AWS_SQS_REGION)%'
43+
version: '2012-11-05'
44+
credentials:
45+
key: '%env(AWS_SQS_KEY)%'
46+
secret: '%env(AWS_SQS_SECRET)%'

Diff for: pkg/enqueue-bundle/Tests/Functional/UseCasesTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ public function provideEnqueueConfigs()
210210
'transport' => [
211211
'default' => 'sqs',
212212
'sqs' => [
213-
'client' => '@Aws\Sqs\SqsClient',
213+
'client' => 'test.sqs_client',
214214
],
215215
],
216216
]];

Diff for: pkg/sqs/SqsConnectionFactory.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ class SqsConnectionFactory implements PsrConnectionFactory
3939
public function __construct($config = 'sqs:')
4040
{
4141
if ($config instanceof SqsClient) {
42-
return $this->client = $config;
42+
$this->client = $config;
43+
$this->config = $this->defaultConfig();
44+
45+
return;
4346
} elseif (empty($config) || 'sqs:' === $config) {
4447
$config = [];
4548
} elseif (is_string($config)) {

Diff for: pkg/sqs/Symfony/SqsTransportFactory.php

+12-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public function addConfiguration(ArrayNodeDefinition $builder)
3838
->scalarNode('key')->defaultNull()->end()
3939
->scalarNode('secret')->defaultNull()->end()
4040
->scalarNode('token')->defaultNull()->end()
41-
->scalarNode('region')->isRequired()->end()
41+
->scalarNode('region')->end()
4242
->integerNode('retries')->defaultValue(3)->end()
4343
->scalarNode('version')->cannotBeEmpty()->defaultValue('2012-11-05')->end()
4444
->booleanNode('lazy')
@@ -54,8 +54,18 @@ public function addConfiguration(ArrayNodeDefinition $builder)
5454
*/
5555
public function createConnectionFactory(ContainerBuilder $container, array $config)
5656
{
57+
if (empty($config['client']) && empty($config['region'])) {
58+
throw new RuntimeException('Either "client" or "region" must be provided to SQS in Enqueue configuration');
59+
}
60+
61+
$arguments = $config;
62+
63+
if (!empty($config['client'])) {
64+
$arguments = new Reference($config['client']);
65+
}
66+
5767
$factory = new Definition(SqsConnectionFactory::class);
58-
$factory->setArguments([$config]);
68+
$factory->setArguments([$arguments]);
5969

6070
$factoryId = sprintf('enqueue.transport.%s.connection_factory', $this->getName());
6171
$container->setDefinition($factoryId, $factory);

0 commit comments

Comments
 (0)