Skip to content

Commit c411070

Browse files
authored
Fix setting timeout in seconds in SqsTemplate (#1250)
1 parent bb9b4a2 commit c411070

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

spring-cloud-aws-sqs/src/main/java/io/awspring/cloud/sqs/operations/SqsTemplate.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -602,11 +602,11 @@ private ReceiveMessageRequest doCreateReceiveMessageRequest(Duration pollTimeout
602602
ReceiveMessageRequest.Builder builder = ReceiveMessageRequest.builder().queueUrl(attributes.getQueueUrl())
603603
.maxNumberOfMessages(maxNumberOfMessages).messageAttributeNames(this.messageAttributeNames)
604604
.attributeNamesWithStrings(this.messageSystemAttributeNames)
605-
.waitTimeSeconds(pollTimeout.toSecondsPart());
605+
.waitTimeSeconds(toInt(pollTimeout.toSeconds()));
606606
if (additionalHeaders.containsKey(SqsHeaders.SQS_VISIBILITY_TIMEOUT_HEADER)) {
607607
builder.visibilityTimeout(
608-
getValueAs(additionalHeaders, SqsHeaders.SQS_VISIBILITY_TIMEOUT_HEADER, Duration.class)
609-
.toSecondsPart());
608+
toInt(getValueAs(additionalHeaders, SqsHeaders.SQS_VISIBILITY_TIMEOUT_HEADER, Duration.class)
609+
.toSeconds()));
610610
}
611611
if (additionalHeaders.containsKey(SqsHeaders.SQS_RECEIVE_REQUEST_ATTEMPT_ID_HEADER)) {
612612
builder.receiveRequestAttemptId(
@@ -616,6 +616,15 @@ private ReceiveMessageRequest doCreateReceiveMessageRequest(Duration pollTimeout
616616
return builder.build();
617617
}
618618

619+
// Convert a long value to an int. Values larger than Integer.MAX_VALUE are set to Integer.MAX_VALUE
620+
private int toInt(long longValue) {
621+
if (longValue > Integer.MAX_VALUE) {
622+
return Integer.MAX_VALUE;
623+
}
624+
625+
return (int) longValue;
626+
}
627+
619628
private <V> V getValueAs(Map<String, Object> headers, String headerName, Class<V> valueClass) {
620629
return valueClass.cast(headers.get(headerName));
621630
}

spring-cloud-aws-sqs/src/test/java/io/awspring/cloud/sqs/operations/SqsTemplateTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -920,7 +920,7 @@ void shouldReceiveFromOptions() {
920920
.willReturn(CompletableFuture.completedFuture(deleteResponse));
921921
SqsOperations template = SqsTemplate.newSyncTemplate(mockClient);
922922
Optional<Message<String>> receivedMessage = template.receive(from -> from.queue(queue)
923-
.pollTimeout(Duration.ofSeconds(1)).visibilityTimeout(Duration.ofSeconds(5))
923+
.pollTimeout(Duration.ofSeconds(61)).visibilityTimeout(Duration.ofSeconds(65))
924924
.additionalHeader(headerName1, headerValue1).additionalHeaders(Map.of(headerName2, headerValue2)),
925925
String.class);
926926
assertThat(receivedMessage).isPresent().hasValueSatisfying(message -> {
@@ -932,8 +932,8 @@ void shouldReceiveFromOptions() {
932932
then(mockClient).should().receiveMessage(captor.capture());
933933
ReceiveMessageRequest request = captor.getValue();
934934
assertThat(request.maxNumberOfMessages()).isEqualTo(1);
935-
assertThat(request.visibilityTimeout()).isEqualTo(5);
936-
assertThat(request.waitTimeSeconds()).isEqualTo(1);
935+
assertThat(request.visibilityTimeout()).isEqualTo(65);
936+
assertThat(request.waitTimeSeconds()).isEqualTo(61);
937937
}
938938

939939
@Test

0 commit comments

Comments
 (0)