SQS Request Queue URL Incorrect When using Batch Manager with a client having Override Configuration on request
- Vorherrschende Sprache
- Java
- Sterne
- 2.6k
- Forks
- 1k
- Ø Merge
- 2 T. 9 Std.
- Gemergte PRs (30 T.)
- 51
Beschreibung
### Describe the bug
Looking through the code, it looks like if the batch manager is created with an SQS client that has an override configuration, it sets the `queueUrl` as the `batchKey`.
https://github.com/aws/aws-sdk-java-v2/blob/master/services/sqs/src/main/java/software/amazon/awssdk/services/sqs/internal/batchmanager/SendMessageBatchManager.java#L100
This happens for all SQS request types (Send Message, Change Message Visibility, etc...)
The `batchKey` is the original queue URL plus the override configuration hash code appended.
For example:
Original Queue URL:
```
https://sqs.us-west-2.amazonaws.com/487219371131/queue-name
```
Resulting Queue URL (Batch Key):
```
https://sqs.us-west-2.amazonaws.com/487219371131/queue-name-126351273
```
@joviegas looks like this code was implemented by you.
### Regression Issue
- [ ] Select this option if this issue appears to be a regression.
### Expected Behavior
The Queue URL should not be changed.
### Current Behavior
The request errors with "Queue Does Not Exist:
```
software.amazon.awssdk.services.sqs.model.QueueDoesNotExistException
```
### Reproduction Steps
Create a batch manager, and pass it an SQS client. Call the `sendMessage` with an override configuration.
```java
SqsAsyncClient asyncClient = SqsAsyncClient.create();
SqsAsyncBatchManager batchManager = asyncClient.batchManager();
SendMessageRequest request = SendMessageRequest.builder()
.queueUrl("https://sqs.us-west-2.amazonaws.com/487219371131/queue-name")
.messageBody("Hello")
.overrideConfiguration(...)
.build();
batchManager.sendMessage(request);
```
This behavior was noticed when using the SQS exended client implementation:
- https://github.com/awslabs/amazon-sqs-java-extended-client-lib/blob/master/src/main/java/com/amazon/sqs/javamessaging/AmazonSQSExtendedAsyncClient.java#L534
- https://github.com/awslabs/amazon-sqs-java-extended-client-lib/blob/master/src/main/java/com/amazon/sqs/javamessaging/AmazonSQSExtendedClientUtil.java#L131-L139
The lines above appends a user agent (updates override configuration).
### Possible Solution
Set the `queueUrl` as the original queue url, not the `batchKey`? I'm not sure of the consequences, though.
### Additional Information/Context
_No response_
### AWS Java SDK version used
2.33.4
### JDK version used
21
### Operating System and version
Darwin 24.6.0 Darwin Kernel Version 24.6.0: Mon Jul 14 11:30:40 PDT 2025; root:xnu-11417.140.69~1/RELEASE_ARM64_T6041 arm64
Beitragsleitfaden
Rechercherichtung
Beginne in services/sqs/src/main/java/software/amazon/awssdk/services/sqs/internal/batchmanager/SendMessageBatchManager.java bei der referenzierten Batch-Key-Logik und untersuche anschließend, wie andere SQS-Anfragetypen sie verwenden. Reproduziere die Anfrage mit einer Override-Konfiguration und verifiziere, dass das Batching die ursprüngliche Queue-URL beibehält und keine QueueDoesNotExistException mehr erzeugt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- aws, java
- Bereich
- api, backend
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100