BeanstalkdConnector.php 1.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace Illuminate\Queue\Connectors;
  3. use Pheanstalk\Connection;
  4. use Pheanstalk\Pheanstalk;
  5. use Pheanstalk\PheanstalkInterface;
  6. use Illuminate\Queue\BeanstalkdQueue;
  7. class BeanstalkdConnector implements ConnectorInterface
  8. {
  9. /**
  10. * Establish a queue connection.
  11. *
  12. * @param array $config
  13. * @return \Illuminate\Contracts\Queue\Queue
  14. */
  15. public function connect(array $config)
  16. {
  17. $retryAfter = $config['retry_after'] ?? Pheanstalk::DEFAULT_TTR;
  18. return new BeanstalkdQueue($this->pheanstalk($config), $config['queue'], $retryAfter);
  19. }
  20. /**
  21. * Create a Pheanstalk instance.
  22. *
  23. * @param array $config
  24. * @return \Pheanstalk\Pheanstalk
  25. */
  26. protected function pheanstalk(array $config)
  27. {
  28. return new Pheanstalk(
  29. $config['host'],
  30. $config['port'] ?? PheanstalkInterface::DEFAULT_PORT,
  31. $config['timeout'] ?? Connection::DEFAULT_CONNECT_TIMEOUT,
  32. $config['persistent'] ?? false
  33. );
  34. }
  35. }