123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
-
- namespace Illuminate\Queue\Jobs;
-
- use Aws\Sqs\SqsClient;
- use Illuminate\Container\Container;
- use Illuminate\Contracts\Queue\Job as JobContract;
-
- class SqsJob extends Job implements JobContract
- {
- /**
- * The Amazon SQS client instance.
- *
- * @var \Aws\Sqs\SqsClient
- */
- protected $sqs;
-
- /**
- * The Amazon SQS job instance.
- *
- * @var array
- */
- protected $job;
-
- /**
- * Create a new job instance.
- *
- * @param \Illuminate\Container\Container $container
- * @param \Aws\Sqs\SqsClient $sqs
- * @param array $job
- * @param string $connectionName
- * @param string $queue
- * @return void
- */
- public function __construct(Container $container, SqsClient $sqs, array $job, $connectionName, $queue)
- {
- $this->sqs = $sqs;
- $this->job = $job;
- $this->queue = $queue;
- $this->container = $container;
- $this->connectionName = $connectionName;
- }
-
- /**
- * Release the job back into the queue.
- *
- * @param int $delay
- * @return void
- */
- public function release($delay = 0)
- {
- parent::release($delay);
-
- $this->sqs->changeMessageVisibility([
- 'QueueUrl' => $this->queue,
- 'ReceiptHandle' => $this->job['ReceiptHandle'],
- 'VisibilityTimeout' => $delay,
- ]);
- }
-
- /**
- * Delete the job from the queue.
- *
- * @return void
- */
- public function delete()
- {
- parent::delete();
-
- $this->sqs->deleteMessage([
- 'QueueUrl' => $this->queue, 'ReceiptHandle' => $this->job['ReceiptHandle'],
- ]);
- }
-
- /**
- * Get the number of times the job has been attempted.
- *
- * @return int
- */
- public function attempts()
- {
- return (int) $this->job['Attributes']['ApproximateReceiveCount'];
- }
-
- /**
- * Get the job identifier.
- *
- * @return string
- */
- public function getJobId()
- {
- return $this->job['MessageId'];
- }
-
- /**
- * Get the raw body string for the job.
- *
- * @return string
- */
- public function getRawBody()
- {
- return $this->job['Body'];
- }
-
- /**
- * Get the underlying SQS client instance.
- *
- * @return \Aws\Sqs\SqsClient
- */
- public function getSqs()
- {
- return $this->sqs;
- }
-
- /**
- * Get the underlying raw SQS job.
- *
- * @return array
- */
- public function getSqsJob()
- {
- return $this->job;
- }
- }
|