|
2 | 2 |
|
3 | 3 | import com.uid2.optout.Const; |
4 | 4 | import com.uid2.optout.auth.InternalAuthMiddleware; |
| 5 | +import com.uid2.optout.sqs.SqsMessageOperations; |
5 | 6 | import com.uid2.optout.web.QuorumWebClient; |
6 | 7 | import com.uid2.shared.Utils; |
7 | 8 | import com.uid2.shared.attest.AttestationTokenService; |
@@ -71,6 +72,7 @@ public class OptOutServiceVerticle extends AbstractVerticle { |
71 | 72 | private final SqsClient sqsClient; |
72 | 73 | private final String sqsQueueUrl; |
73 | 74 | private final boolean sqsEnabled; |
| 75 | + private final int sqsMaxQueueSize; |
74 | 76 |
|
75 | 77 | public OptOutServiceVerticle(Vertx vertx, |
76 | 78 | IAuthorizableProvider clientKeyProvider, |
@@ -119,6 +121,7 @@ public OptOutServiceVerticle(Vertx vertx, |
119 | 121 |
|
120 | 122 | this.sqsEnabled = jsonConfig.getBoolean(Const.Config.OptOutSqsEnabledProp, false); |
121 | 123 | this.sqsQueueUrl = jsonConfig.getString(Const.Config.OptOutSqsQueueUrlProp); |
| 124 | + this.sqsMaxQueueSize = jsonConfig.getInteger(Const.Config.OptOutSqsMaxQueueSizeProp, 0); // 0 = no limit |
122 | 125 |
|
123 | 126 | SqsClient tempSqsClient = null; |
124 | 127 | if (this.sqsEnabled) { |
@@ -396,6 +399,21 @@ private void handleQueue(RoutingContext routingContext) { |
396 | 399 | // Send message to SQS queue |
397 | 400 | vertx.executeBlocking(promise -> { |
398 | 401 | try { |
| 402 | + // Check queue size limit before sending |
| 403 | + if (this.sqsMaxQueueSize > 0) { |
| 404 | + SqsMessageOperations.QueueAttributes queueAttrs = |
| 405 | + SqsMessageOperations.getQueueAttributes(this.sqsClient, this.sqsQueueUrl); |
| 406 | + if (queueAttrs != null) { |
| 407 | + int currentSize = queueAttrs.getTotalMessages(); |
| 408 | + if (currentSize >= this.sqsMaxQueueSize) { |
| 409 | + LOGGER.warn("sqs_queue_full: rejecting message, currentSize={}, maxSize={}", |
| 410 | + currentSize, this.sqsMaxQueueSize); |
| 411 | + promise.fail(new IllegalStateException("queue size limit exceeded")); |
| 412 | + return; |
| 413 | + } |
| 414 | + } |
| 415 | + } |
| 416 | + |
399 | 417 | SendMessageRequest sendMsgRequest = SendMessageRequest.builder() |
400 | 418 | .queueUrl(this.sqsQueueUrl) |
401 | 419 | .messageBody(messageBody.encode()) |
|
0 commit comments