Amazon SQS - добавление и удаление сообщений - PullRequest
0 голосов
/ 30 октября 2019

Народ,

Мы запускаем наше приложение под высокой нагрузкой. Мы пытаемся использовать реквизитную функциональность amazon DLQ.

Код, который мы используем ниже

public void requeueMessage(String queueName, Message message) {
    try {
        String queueUrl = getQueueURL(queueName)
        this.amazonSQS.deleteMessage(queueUrl, message.getReceiptHandle());
    } catch (AmazonClientException var4) {
        throw new RuntimeException("Delete failed");
    }

    sendMessageAWS(queueName, message.getBody(), buildMessageBody(message));
}

Мы видим, что при высокой нагрузке deleteMessage успешно выполняется для одного и того же сообщения несколько раз и одинаковосообщение получено дважды, в то время как второе не выполнено, за исключением следующего.

java.lang.IllegalArgumentException: Multiple entries with same key: X-requeue-of= . 
{StringValue: 10090,StringListValues: [],BinaryListValues: [],DataType: String} and X- 
requeue-of={StringValue:10091,StringListValues: [],BinaryListValues: [],DataType: String}
...