11package uk .gov .pay .webhooks .queue .sqs ;
22
3- import com .amazonaws .AmazonServiceException ;
4- import com .amazonaws .services .sqs .AmazonSQS ;
5- import com .amazonaws .services .sqs .model .AmazonSQSException ;
6- import com .amazonaws .services .sqs .model .ChangeMessageVisibilityRequest ;
7- import com .amazonaws .services .sqs .model .DeleteMessageRequest ;
8- import com .amazonaws .services .sqs .model .ReceiveMessageRequest ;
9- import com .amazonaws .services .sqs .model .ReceiveMessageResult ;
103import org .slf4j .Logger ;
114import org .slf4j .LoggerFactory ;
5+ import software .amazon .awssdk .awscore .exception .AwsServiceException ;
6+ import software .amazon .awssdk .services .sqs .SqsClient ;
7+ import software .amazon .awssdk .services .sqs .model .ChangeMessageVisibilityRequest ;
8+ import software .amazon .awssdk .services .sqs .model .DeleteMessageRequest ;
9+ import software .amazon .awssdk .services .sqs .model .ReceiveMessageRequest ;
10+ import software .amazon .awssdk .services .sqs .model .ReceiveMessageResponse ;
11+ import software .amazon .awssdk .services .sqs .model .SqsException ;
1212import uk .gov .pay .webhooks .app .WebhooksConfig ;
1313
1414import jakarta .inject .Inject ;
1717public class SqsQueueService {
1818 private final Logger logger = LoggerFactory .getLogger (SqsQueueService .class );
1919
20- private final AmazonSQS sqsClient ;
20+ private final SqsClient sqsClient ;
2121
2222 private final int messageMaximumWaitTimeInSeconds ;
2323 private final int messageMaximumBatchSize ;
2424
2525 @ Inject
26- public SqsQueueService (AmazonSQS sqsClient , WebhooksConfig webhooksConfig ) {
26+ public SqsQueueService (SqsClient sqsClient , WebhooksConfig webhooksConfig ) {
2727 this .sqsClient = sqsClient ;
2828 this .messageMaximumBatchSize = webhooksConfig .getSqsConfig ().getMessageMaximumBatchSize ();
2929 this .messageMaximumWaitTimeInSeconds = webhooksConfig .getSqsConfig ().getMessageMaximumWaitTimeInSeconds ();
3030 }
3131
3232 public List <QueueMessage > receiveMessages (String queueUrl , String messageAttributeName ) throws QueueException {
3333 try {
34- ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest (queueUrl );
35- receiveMessageRequest
36- .withMessageAttributeNames (messageAttributeName )
37- .withWaitTimeSeconds (messageMaximumWaitTimeInSeconds )
38- .withMaxNumberOfMessages (messageMaximumBatchSize );
34+ // ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl);
35+ // receiveMessageRequest
36+ // .messageAttributeNames (messageAttributeName)
37+ // .waitTimeSeconds (messageMaximumWaitTimeInSeconds)
38+ // .maxNumberOfMessages (messageMaximumBatchSize);
3939
40- ReceiveMessageResult receiveMessageResult = sqsClient .receiveMessage (receiveMessageRequest );
40+ ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest .builder ()
41+ .queueUrl (queueUrl )
42+ .messageAttributeNames ()
43+ .waitTimeSeconds (1 )
44+ .maxNumberOfMessages (10 )
45+ .build ();
46+
47+ ReceiveMessageResponse receiveMessageResult = sqsClient .receiveMessage (receiveMessageRequest );
4148
4249 return QueueMessage .of (receiveMessageResult );
4350 } catch (Exception e ) {
@@ -48,26 +55,28 @@ public List<QueueMessage> receiveMessages(String queueUrl, String messageAttribu
4855
4956 public void deleteMessage (String queueUrl , String messageReceiptHandle ) throws QueueException {
5057 try {
51- sqsClient .deleteMessage (new DeleteMessageRequest (queueUrl , messageReceiptHandle ));
52- } catch (AmazonSQSException | UnsupportedOperationException e ) {
58+ DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest .builder ().queueUrl (queueUrl ).receiptHandle (messageReceiptHandle ).build ();
59+ sqsClient .deleteMessage (deleteMessageRequest );
60+ } catch (SqsException | UnsupportedOperationException e ) {
5361 logger .error ("Failed to delete message from SQS queue - {}" , e .getMessage ());
5462 throw new QueueException ("Failed to delete message from SQS queue" , e );
55- } catch (AmazonServiceException e ) {
56- logger .error ("Failed to delete message from SQS queue - [errorMessage={}] [awsErrorCode={}]" , e .getMessage (), e .getErrorCode ());
63+ } catch (AwsServiceException e ) {
64+ logger .error ("Failed to delete message from SQS queue - [errorMessage={}] [awsErrorCode={}]" , e .getMessage (), e .awsErrorDetails (). errorCode ());
5765 throw new QueueException ("Failed to delete message from SQS queue" , e );
5866 }
5967 }
6068
6169 public void deferMessage (String queueUrl , String messageReceiptHandle , int retryDelayInSeconds ) throws QueueException {
6270 try {
63- ChangeMessageVisibilityRequest changeMessageVisibilityRequest = new ChangeMessageVisibilityRequest (
64- queueUrl ,
65- messageReceiptHandle ,
66- retryDelayInSeconds
67- );
71+ ChangeMessageVisibilityRequest changeMessageVisibilityRequest = ChangeMessageVisibilityRequest .builder ()
72+ .queueUrl (queueUrl )
73+ .receiptHandle (messageReceiptHandle )
74+ .visibilityTimeout (retryDelayInSeconds )
75+ .build ();
76+
6877
6978 sqsClient .changeMessageVisibility (changeMessageVisibilityRequest );
70- } catch (AmazonSQSException | UnsupportedOperationException e ) {
79+ } catch (SqsException | UnsupportedOperationException e ) {
7180 logger .error ("Failed to defer message from SQS queue - {}" , e .getMessage ());
7281 throw new QueueException ("Failed to defer message from SQS queue" , e );
7382 }
0 commit comments