Народ,
Мы запускаем наше приложение под высокой нагрузкой. Мы пытаемся использовать реквизитную функциональность 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}