【发布时间】:2020-04-13 08:21:54
【问题描述】:
我正在研究一种方法,我需要将消息发送回 SQS。
我不希望它作为新消息出现,因为这将重置代码所需的 approximateRecieveCount 参数。
请注意
我无法将 NACK 发送到队列,因为我正在将其作为 10 条消息的批次读取,我想在某些情况下手动将其回发给单个消息,而不是作为批次。
我正在尝试使用的代码
我尝试设置 JMSMessageId,但根据文档是不可能的 -
在您发送消息后,Amazon SQS 会为每条消息设置以下标头和属性:
- JMSMessageID
- JMS_SQS_SequenceNumber(仅适用于 FIFO 队列)
我现在使用的代码是
defaultJmsTemplate.send(destinationName, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
Message message = session.createTextMessage(errorMessage);
message.setJMSCorrelationID(transactionId);
if (destinationName.endsWith(".fifo")) {
message.setStringProperty("JMSXGroupID", property.getMessageGroup());
message.setStringProperty("JMS_SQS_DeduplicationId", java.util.UUID.randomUUID().toString());
}
return message;
}
});
}
我可以设置/使用什么来确保消息不被视为新消息并保持大致的接收计数吗?
【问题讨论】:
标签: java amazon-sqs spring-jms