SqsConnector.php 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace Illuminate\Queue\Connectors;
  3. use Aws\Sqs\SqsClient;
  4. use Illuminate\Support\Arr;
  5. use Illuminate\Queue\SqsQueue;
  6. class SqsConnector implements ConnectorInterface
  7. {
  8. /**
  9. * Establish a queue connection.
  10. *
  11. * @param array $config
  12. * @return \Illuminate\Contracts\Queue\Queue
  13. */
  14. public function connect(array $config)
  15. {
  16. $config = $this->getDefaultConfiguration($config);
  17. if ($config['key'] && $config['secret']) {
  18. $config['credentials'] = Arr::only($config, ['key', 'secret']);
  19. }
  20. return new SqsQueue(
  21. new SqsClient($config), $config['queue'], $config['prefix'] ?? ''
  22. );
  23. }
  24. /**
  25. * Get the default configuration for SQS.
  26. *
  27. * @param array $config
  28. * @return array
  29. */
  30. protected function getDefaultConfiguration(array $config)
  31. {
  32. return array_merge([
  33. 'version' => 'latest',
  34. 'http' => [
  35. 'timeout' => 60,
  36. 'connect_timeout' => 60,
  37. ],
  38. ], $config);
  39. }
  40. }