Skip to content

Commit 59751d9

Browse files
committed
Merge branch 'master-codemonauts' into feature/sqs-fifo
# Conflicts: # CHANGELOG.md
2 parents c5e75f9 + e516350 commit 59751d9

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Yii2 Queue Extension Change Log
1919
- Enh #318: Added check result call function flock (evaldemar)
2020
- Enh: Job execution result is now forwarded to the event handler (zhuravljov)
2121
- Enh: `ErrorEvent` was marked as deprecated (zhuravljov)
22+
- Enh: Add AWS SQS FIFO support (kringkaste)
2223

2324
2.1.0 May 24, 2018
2425
------------------

docs/guide/driver-sqs.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ The driver uses AWS SQS to store queue data.
55

66
You have to add `aws/aws-sdk-php` extension to your application in order to use it.
77

8-
Configuration example:
8+
Configuration example for standard queues:
99

1010
```php
1111
return [
@@ -24,6 +24,30 @@ return [
2424
];
2525
```
2626

27+
Configuration example for FIFO queues:
28+
29+
```php
30+
return [
31+
'bootstrap' => [
32+
'queue', // The component registers own console commands
33+
],
34+
'components' => [
35+
'queue' => [
36+
'class' => \yii\queue\sqs\Queue::class,
37+
'url' => '<sqs url>',
38+
'key' => '<key>',
39+
'secret' => '<secret>',
40+
'region' => '<region>',
41+
'messageGroupId' => '<Group ID>',
42+
],
43+
],
44+
];
45+
```
46+
47+
The message group ID is required by SQS for FIFO queues. You can configure your own or use the "default" value.
48+
49+
The deduplication ID is generated automatically, so no matter if you have activated content-based deduplication in the SQS queue or not, this ID will be used.
50+
2751
Console
2852
-------
2953

src/drivers/sqs/Queue.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ class Queue extends CliQueue
4646
* @var string
4747
*/
4848
public $version = 'latest';
49+
/**
50+
* Message Group ID for FIFO queues.
51+
* @var string
52+
*/
53+
public $messageGroupId = 'default';
4954
/**
5055
* @var string command class name
5156
* @inheritdoc
@@ -172,7 +177,7 @@ protected function pushMessage($message, $ttr, $delay, $priority)
172177
throw new NotSupportedException('Priority is not supported in this driver');
173178
}
174179

175-
$response = $this->getClient()->sendMessage([
180+
$request = [
176181
'QueueUrl' => $this->url,
177182
'MessageBody' => $message,
178183
'DelaySeconds' => $delay,
@@ -182,7 +187,14 @@ protected function pushMessage($message, $ttr, $delay, $priority)
182187
'StringValue' => $ttr,
183188
],
184189
],
185-
]);
190+
];
191+
192+
if (substr($this->url, -5) === '.fifo') {
193+
$request['MessageGroupId'] = $this->messageGroupId;
194+
$request['MessageDeduplicationId'] = hash('sha256', $message);
195+
}
196+
197+
$response = $this->getClient()->sendMessage($request);
186198
return $response['MessageId'];
187199
}
188200

0 commit comments

Comments
 (0)