Skip to content

Commit 5ac366c

Browse files
committed
Set JMSDeliveryTime to ApproximateFirstReceiveTimestamp
1 parent d651f8b commit 5ac366c

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

src/main/java/com/amazon/sqs/javamessaging/SQSMessageConsumerPrefetch.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ protected jakarta.jms.Message convertToJMSMessage(Message message) throws JMSExc
382382
}
383383

384384
jmsMessage.setJMSTimestamp(getJMSTimestamp(message));
385+
jmsMessage.setJMSDeliveryTime(getApproximateFirstReceiveTimestamp(message));
385386
return jmsMessage;
386387
}
387388

@@ -395,6 +396,16 @@ private long getJMSTimestamp(Message message) {
395396
}
396397
}
397398

399+
private long getApproximateFirstReceiveTimestamp(Message message) {
400+
Map<String, String> systemAttributes = message.attributesAsStrings();
401+
String timestamp = systemAttributes.get(SQSMessagingClientConstants.APPROXIMATE_FIRST_RECEIVE_TIMESTAMP);
402+
if (timestamp != null) {
403+
return Long.parseLong(timestamp);
404+
} else {
405+
return 0L;
406+
}
407+
}
408+
398409
protected void nackQueueMessages() {
399410
// Also nack messages already in the messageQueue
400411
synchronized (stateLock) {

src/main/java/com/amazon/sqs/javamessaging/SQSMessagingClientConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ public class SQSMessagingClientConstants {
8080

8181
public static final String SEQUENCE_NUMBER = "SequenceNumber";
8282

83+
public static final String APPROXIMATE_FIRST_RECEIVE_TIMESTAMP = "ApproximateFirstReceiveTimestamp";
84+
8385
static final String APPENDED_USER_AGENT_HEADER_VERSION;
8486
static {
8587
try {

src/main/java/com/amazon/sqs/javamessaging/message/SQSMessage.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public class SQSMessage implements Message {
104104
private String type;
105105
private SQSQueueDestination replyTo;
106106
private Destination destination;
107+
private long deliveryTime;
107108

108109
private final Map<String, JMSMessagePropertyValue> properties = new HashMap<>();
109110

@@ -422,13 +423,12 @@ public void setJMSExpiration(long expiration) throws JMSException {
422423

423424
@Override
424425
public long getJMSDeliveryTime() throws JMSException {
425-
// FIXME
426-
return 0;
426+
return deliveryTime;
427427
}
428428

429429
@Override
430430
public void setJMSDeliveryTime(long deliveryTime) throws JMSException {
431-
// FIXME
431+
this.deliveryTime = deliveryTime;
432432
}
433433

434434
@Override

src/test/java/com/amazon/sqs/javamessaging/SQSMessageConsumerPrefetchTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -997,7 +997,8 @@ public void testConvertToJMSMessageTextTypeAttribute(int numberOfMessagesToPrefe
997997
long now = System.currentTimeMillis();
998998
Map<String, String> mapAttributes = Map.of(
999999
SQSMessagingClientConstants.APPROXIMATE_RECEIVE_COUNT, "1",
1000-
SQSMessagingClientConstants.SENT_TIMESTAMP, Long.toString(now));
1000+
SQSMessagingClientConstants.SENT_TIMESTAMP, Long.toString(now),
1001+
SQSMessagingClientConstants.APPROXIMATE_FIRST_RECEIVE_TIMESTAMP, Long.toString(now));
10011002

10021003
// Return message attributes with message type 'TEXT'
10031004
Message message = Message.builder()
@@ -1017,6 +1018,7 @@ public void testConvertToJMSMessageTextTypeAttribute(int numberOfMessagesToPrefe
10171018
assertTrue(jsmMessage instanceof SQSTextMessage);
10181019
assertEquals(message.body(), "MessageBody");
10191020
assertEquals(jsmMessage.getJMSTimestamp(), now);
1021+
assertEquals(jsmMessage.getJMSDeliveryTime(), now);
10201022
}
10211023

10221024
/**
@@ -1830,7 +1832,7 @@ public void testRequestedMessageTracking(int numberOfMessagesToPrefetch) throws
18301832

18311833
// Wait to make sure the received calls have gotten far enough to
18321834
// wait on the message queue
1833-
allReceivesWaiting.await();
1835+
allReceivesWaiting.await(1000, TimeUnit.MILLISECONDS);
18341836

18351837
assertEquals(concurrentReceives, consumerPrefetch.messagesRequested);
18361838

0 commit comments

Comments
 (0)