### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

When a new message is created with attributed, message: `{QueueUrl: http://localhost:32921/000000000000/c2e89862-2dd2-48a2-aba7-3948660eaea7,MessageBody: Test msg,DelaySeconds: 0,MessageAttributes: {retryCount={StringValue: 3,StringListValues: [],BinaryListValues: [],DataType: NUMBER}, timeToConsume={StringValue: 0,StringListValues: [],BinaryListValues: [],DataType: NUMBER}},MessageSystemAttributes: {},}` 
it fails to get published in the queue with exception: `com.amazonaws.services.sqs.model.AmazonSQSException: null (Service: AmazonSQS; Status Code: 400; Error Code: 400 ; Request ID: BDFBJI2A19T0WXE9J2GSPA0GO7MGIEOYBTVCCW4L2Z1W1UK6CX8A; Proxy: null)`

**Note: It is published successfully when I remove all attributes**

### Expected Behavior

Publish successfully in the queue

### How are you starting LocalStack?

With the `localstack` script

### Steps To Reproduce

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

```
    private static final DockerImageName DOCKER_IMAGE_NAME = DockerImageName.parse("localstack/localstack");
    private static final String DEFAULT_TAG = "0.13.3";
    private final DockerImageName LOCAL_STACK_IMAGE = DOCKER_IMAGE_NAME.withTag(DEFAULT_TAG);

    localstack = new LocalStackContainer(LOCAL_STACK_IMAGE)
                .withServices(localStackService);

     localstack.start();
```

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

#### Creating queue: 
```
public String createQueue(String queueName) {
        log.info("Creating queue with name: {}", queueName);
        try {
            CreateQueueRequest createQueueRequest = new CreateQueueRequest(queueName);
            return amazonSQS.createQueue(createQueueRequest).getQueueUrl();
        } catch (AmazonSQSException e) {
            log.error("Error While Creating Queue: {}", ExceptionUtils.getStackTrace(e));
            throw e;
        }
    }
```

Publish In Queue:
```
    public SendMessageResult publishInQueue(final String queueUrl, final PublishRequestMessage message) throws SQSPublisherException {
        log.info("Publishing Message: {}, in the queue: {}", message.getMessage(), queueUrl);
        try {
            final SendMessageRequest request = getSendMessageRequest(queueUrl, message.getMessage(), message.getMessageProperties());
            return amazonSQS.sendMessage(request);
        } catch (Exception ex) {
            throw new SQSPublisherException("Exception while queuing message: " + message + " ,exception: " + ex);
        }
    }

    private SendMessageRequest getSendMessageRequest(final String queueUrl,
                                                     final String message,
                                                     MessageProperties messageProperties) throws SQSPublisherException {

        messageProperties = handleEmptyProperties(messageProperties);

        Long timeToConsume = messageProperties.getTimeToConsumeMessage();
        Integer deliveryDelay = messageProperties.getDeliveryDelay();
        Integer retryCount = messageProperties.getRetryCount();

        try {
            final SendMessageRequest request = new SendMessageRequest(queueUrl, message)
                    .withMessageAttributes(Collections.unmodifiableMap(
                            getAttributeValueMap(Objects.nonNull(timeToConsume) ? timeToConsume : TIME_TO_CONSUME,
                                    Objects.nonNull(retryCount) ? retryCount : RETRY_COUNT)
                    ));

            int delay = getAllowedDelay(Objects.nonNull(deliveryDelay) ? deliveryDelay : DELIVERY_DELAY);
            request.setDelaySeconds(delay);

            return request;
        } catch (Exception e) {
            throw new SQSPublisherException("Error While Creating Message Request" + e);
        }
    }

    private Map<String, MessageAttributeValue> getAttributeValueMap(final long timeToConsume, final long retryCount) {
        Map<String, MessageAttributeValue> attributeValueMap = new HashMap<>();

        attributeValueMap.put(MessageProperty.RETRY.getDescription(),
                getAttributeValue(SQSAttributeDataType.NUMBER, String.valueOf(retryCount)));
        attributeValueMap.put(MessageProperty.TIME_TO_CONSUME.getDescription(),
                getAttributeValue(SQSAttributeDataType.NUMBER, String.valueOf(timeToConsume)));

        return attributeValueMap;
    }
```


### Environment

```markdown
- OS: macOS Big Sur
- LocalStack: 0.13.3
```


### Anything else?

_No response_
import base64
import copy
import hashlib
import heapq
import inspect
import json
import logging
import random
import re
import string
import threading
import time
from queue import Empty, PriorityQueue
from typing import Dict, List, NamedTuple, Optional, Set
from moto.sqs.models import BINARY_TYPE_FIELD_INDEX, STRING_TYPE_FIELD_INDEX
from moto.sqs.models import Message as MotoMessage
from localstack import config, constants
from localstack.aws.api import CommonServiceException, RequestContext
from localstack.aws.api.sqs import (
    ActionNameList,
    AttributeNameList,