Skip to content

Commit c1a0877

Browse files
committed
Fix timestamp handling in SqsMessage and add related tests
1 parent acd0c43 commit c1a0877

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

pkg/sqs/SqsMessage.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,10 @@ public function getMessageId(): ?string
176176

177177
public function getTimestamp(): ?int
178178
{
179-
$value = $this->getHeader('timestamp');
179+
$value = $this->getAttribute('SentTimestamp');
180180

181-
return null === $value ? null : (int) $value;
181+
// SQS SentTimestamp is milliseconds since epoch.
182+
return null === $value ? null : (int) $intdiv($value, 1000);
182183
}
183184

184185
public function setTimestamp(?int $timestamp = null): void

pkg/sqs/Tests/SqsConsumerTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ public function testShouldReceiveMessage()
341341
'ApproximateReceiveCount' => '3',
342342
'SentTimestamp' => '1560512260079',
343343
], $result->getAttributes());
344+
$this->assertSame(1560512260, $result->getTimestamp());
344345
$this->assertTrue($result->isRedelivered());
345346
$this->assertEquals('The Receipt', $result->getReceiptHandle());
346347
$this->assertEquals('theMessageId', $result->getMessageId());

pkg/sqs/Tests/SqsMessageTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,23 @@ public function testShouldSetTimestampAsHeader()
5252
$this->assertSame(['timestamp' => 12345], $message->getHeaders());
5353
}
5454

55+
public function testShouldGetTimestampFromSentTimestampAttribute()
56+
{
57+
$message = new SqsMessage();
58+
$message->setAttributes([
59+
'SentTimestamp' => '1560512260079',
60+
]);
61+
62+
$this->assertSame(1560512260, $message->getTimestamp());
63+
}
64+
65+
public function testShouldReturnNullTimestampWhenSentTimestampAttributeIsMissing()
66+
{
67+
$message = new SqsMessage();
68+
69+
$this->assertNull($message->getTimestamp());
70+
}
71+
5572
public function testShouldSetReplyToAsHeader()
5673
{
5774
$message = new SqsMessage();

0 commit comments

Comments
 (0)