### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

I created an SQS FIFO queue with content based deduplication and sent a message that contains the same messageBody and attributes twice.

The message gets sent and received by the queue twice.

Im using the latest version of localstack with docker-compose.


### Expected Behavior

When ContetBasedDeduplication is set to true a message with the same body should only be recieved once by the queue during the 5 minute deduplication interval.

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

create queue
```
sqs_client.create_queue(
            QueueName='my_queue.fifo',
            Attributes={
                'FifoQueue': 'true',
                'ContentBasedDeduplication': 'true'
            },
        )
```

send message
```
item = {'hello': 'hola'}
sqs_client.send_message(
            QueueUrl='my_queue.fifo',
            MessageBody=json.dumps(item),
            MessageAttributes= {'hello': {'StringValue': 'hola', 'DataType': 'String'}},
            MessageGroupId='group-1'
        )
```





### Environment

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


### Anything else?

_No response_
return "".join(random.choice(string.digits) for _ in range(20))
def _create_message_attribute_hash(message_attributes) -> Optional[str]:
    
    if not isinstance(message_attributes, dict):
        return
    hash = hashlib.md5()
    for attrName in sorted(message_attributes.keys()):
        attr_value = message_attributes[attrName]
        
        MotoMessage.update_binary_length_and_value(hash, MotoMessage.utf8(attrName))
        
        MotoMessage.update_binary_length_and_value(hash, MotoMessage.utf8(attr_value["DataType"]))
        
        if attr_value.get("StringValue"):
            hash.update(bytearray([STRING_TYPE_FIELD_INDEX]))
            MotoMessage.update_binary_length_and_value(
                hash, MotoMessage.utf8(attr_value.get("StringValue"))
            )
        elif attr_value.get("BinaryValue"):
            hash.update(bytearray([BINARY_TYPE_FIELD_INDEX]))
            decoded_binary_value = base64.b64decode(attr_value.get("BinaryValue"))
            MotoMessage.update_binary_length_and_value(hash, decoded_binary_value)
        
        
    return hash.hexdigest()
def get_queue_name_from_url(queue_url: str) -> str: