Skip to content

Commit 522387c

Browse files
authored
Allow MessageGroupId for standard queues (#1138)
* Allow MessageGroupId for standard queues (#1137) Remove validation that prevented MessageGroupId from being used with standard (non-FIFO) queues. This aligns ElasticMQ with AWS SQS's new "fair queues" feature that allows MessageGroupId on standard queues. Fixes #1137 * Update test to reflect that regular queues now allow MessageGroupId
1 parent dd1016f commit 522387c

File tree

2 files changed

+6
-9
lines changed

2 files changed

+6
-9
lines changed

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/AmazonJavaSdkTestSuite.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -445,10 +445,10 @@ class AmazonJavaSdkTestSuite extends SqsClientServerCommunication with Matchers
445445
client.sendMessage(new SendMessageRequest(fifoQueueUrl, "A body"))
446446
)
447447

448-
// Regular queues don't allow message groups
449-
assertInvalidParameterQueueTypeException("MessageGroupId")(
450-
client.sendMessage(new SendMessageRequest(regularQueueUrl, "A body").withMessageGroupId("group-1"))
451-
)
448+
// Regular queues now allow message groups
449+
// Test that sending MessageGroupId to regular queue works
450+
val result = client.sendMessage(new SendMessageRequest(regularQueueUrl, "A body").withMessageGroupId("group-1"))
451+
result should not be null
452452
}
453453

454454
test("FIFO queues do not support delaying individual messages") {

rest/rest-sqs/src/main/scala/org/elasticmq/rest/sqs/SendMessageDirectives.scala

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,17 +88,14 @@ trait SendMessageDirectives {
8888
.fold(error => throw SQSException.invalidAttributeValue("MessageBody", Some(error)), identity)
8989

9090
val messageGroupId = parameters.MessageGroupId match {
91-
// MessageGroupId is only supported for FIFO queues
92-
case Some(v) if !queueData.isFifo => throw SQSException.invalidQueueTypeParameter(MessageGroupIdParameter)
93-
9491
// MessageGroupId is required for FIFO queues
9592
case None if queueData.isFifo => throw SQSException.missingParameter(MessageGroupIdParameter)
9693

97-
// Ensure the given value is valid
94+
// Ensure the given value is valid (for both FIFO and standard queues)
9895
case Some(id) if !isValidFifoPropertyValue(id) =>
9996
throw SQSException.invalidAlphanumericalPunctualParameterValue(MessageGroupIdParameter)
10097

101-
// This must be a correct value (or this isn't a FIFO queue and no value is required)
98+
// This must be a correct value or None
10299
case m => m
103100
}
104101

0 commit comments

Comments
 (0)