Skip to content

Commit ec1b383

Browse files
committed
a naive patch to set JMSTimestamp, see #20
1 parent 50b4886 commit ec1b383

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.ArrayDeque;
1818
import java.util.ArrayList;
1919
import java.util.List;
20+
import java.util.Map;
2021

2122
import javax.jms.JMSException;
2223
import javax.jms.MessageListener;
@@ -325,8 +326,19 @@ protected javax.jms.Message convertToJMSMessage(Message message) throws JMSExcep
325326
}
326327
}
327328
jmsMessage.setJMSDestination(sqsDestination);
328-
return jmsMessage;
329-
}
329+
jmsMessage.setJMSTimestamp(getJMSTimestamp(message));
330+
return jmsMessage;
331+
}
332+
333+
private long getJMSTimestamp(Message message) {
334+
Map<String, String> systemAttributes = message.getAttributes();
335+
String timestamp = systemAttributes.get(SQSMessagingClientConstants.SENT_TIMESTAMP);
336+
if (timestamp != null) {
337+
return Long.parseLong(timestamp);
338+
} else {
339+
return 0L;
340+
}
341+
}
330342

331343
protected void nackQueueMessages() {
332344
// Also nack messages already in the messageQueue

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ public class SQSMessagingClientConstants {
6161
public static final String JMSX_GROUP_SEC = "JMSXGroupSeq";
6262

6363
public static final String APPROXIMATE_RECEIVE_COUNT = "ApproximateReceiveCount";
64+
65+
public static final String SENT_TIMESTAMP = "SentTimestamp";
6466

6567
static final String APPENDED_USER_AGENT_HEADER_VERSION;
6668
static {
@@ -72,3 +74,4 @@ public class SQSMessagingClientConstants {
7274
}
7375
}
7476
}
77+

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import java.util.concurrent.ScheduledExecutorService;
4545
import java.util.concurrent.TimeUnit;
4646
import java.util.concurrent.atomic.AtomicBoolean;
47+
48+
import org.joda.time.DateTime;
4749
import org.junit.Before;
4850
import org.junit.Test;
4951

@@ -1018,6 +1020,8 @@ public void testConvertToJMSMessageTextTypeAttribute() throws JMSException, IOEx
10181020

10191021
Map<String, String> mapAttributes = new HashMap<String, String>();
10201022
mapAttributes.put(SQSMessagingClientConstants.APPROXIMATE_RECEIVE_COUNT, "1");
1023+
Long now = DateTime.now().getMillis();
1024+
mapAttributes.put(SQSMessagingClientConstants.SENT_TIMESTAMP, now.toString());
10211025

10221026
com.amazonaws.services.sqs.model.Message message = mock(com.amazonaws.services.sqs.model.Message.class);
10231027
// Return message attributes with message type 'TEXT'
@@ -1035,6 +1039,7 @@ public void testConvertToJMSMessageTextTypeAttribute() throws JMSException, IOEx
10351039
*/
10361040
assertTrue(jsmMessage instanceof SQSTextMessage);
10371041
assertEquals(message.getBody(), "MessageBody");
1042+
assertEquals(jsmMessage.getJMSTimestamp(), now.longValue());
10381043
}
10391044

10401045
/**

0 commit comments

Comments
 (0)