### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I can delete messages with batch sizes greater than 10 without any errors.

The same applies to changing message visibility.

### Expected Behavior

SQS allows processing batches with a maximum size of 10 elements.

### How are you starting LocalStack?

With a `docker run` command

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

    docker run --rm -it -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

```python
import boto3

sqs = boto3.client("sqs", endpoint_url="http://localhost:4566")
queue_url = sqs.create_queue(QueueName="my-queue")["QueueUrl"]

sqs.send_message_batch(
    QueueUrl=queue_url,
    Entries=[{"Id": str(i), "MessageBody": "foo"} for i in range(10)],
)
sqs.send_message_batch(
    QueueUrl=queue_url,
    Entries=[{"Id": str(i), "MessageBody": "foo"} for i in range(10)],
)

messages = []
messages.extend(
    sqs.receive_message(
        QueueUrl=queue_url,
        AttributeNames=["All"],
        MaxNumberOfMessages=10,
    )["Messages"]
)
messages.extend(
    sqs.receive_message(
        QueueUrl=queue_url,
        AttributeNames=["All"],
        MaxNumberOfMessages=10,
    )["Messages"]
)

# This should raise an error because we're providing a batch with more than 10 elements
sqs.change_message_visibility_batch(
    QueueUrl=queue_url,
    Entries=[
        {
            "Id": str(i),
            "ReceiptHandle": msg["ReceiptHandle"],
            "VisibilityTimeout": 123,
        }
        for i, msg in enumerate(messages)
    ],
)

# This should raise an error because we're providing a batch of more than 10 elements
sqs.delete_message_batch(
    QueueUrl=queue_url,
    Entries=[
        {"Id": str(i), "ReceiptHandle": msg["ReceiptHandle"]}
        for i, msg in enumerate(messages)
    ],
)
```


### Environment

```markdown
- OS: Ubuntu 22.04
- LocalStack: latest
```


### Anything else?

_No response_
assert failed["Id"] == "9"
        assert failed["Code"] == "InvalidMessageContents"
        
        messages = []
        def collect_messages():
            response = aws_client.sqs.receive_message(
                QueueUrl=queue_url, MaxNumberOfMessages=10, WaitTimeSeconds=1
            )
            messages.extend(response.get("Messages", []))
            return len(messages)
        assert poll_condition(
            lambda: collect_messages() >= 9, timeout=10
        ), f"gave up waiting messages, got {len(messages)} from 9"
        bodies = {message["Body"] for message in messages}
        assert bodies == {"0", "1", "2", "3", "4", "5", "6", "7", "8"}
    @pytest.mark.only_localstack
    def test_external_hostname(self, monkeypatch, sqs_create_queue, aws_client):
        external_host = "external-host"
        external_port = "12345"
        monkeypatch.setattr(config, "SQS_ENDPOINT_STRATEGY", "off")
        monkeypatch.setattr(config, "SQS_PORT_EXTERNAL", external_port)
        monkeypatch.setattr(config, "HOSTNAME_EXTERNAL", external_host)
        queue_url = sqs_create_queue()
        assert f"{external_host}:{external_port}" in queue_url
        message_body = "external_host_test"
        aws_client.sqs.send_message(QueueUrl=queue_url, MessageBody=message_body)
        receive_result = aws_client.sqs.receive_message(QueueUrl=queue_url)
        assert receive_result["Messages"][0]["Body"] == message_body
    @pytest.mark.only_localstack
    def test_external_hostname_via_host_header(self, monkeypatch, sqs_create_queue):