如何使用 Spring JmsTemplate 在 AWS SQS 消息上添加传递延迟

how to add delivery delay on AWS SQS messages using Spring JmsTemplate

您好,我想使用 java 和 JmsTemplate 实现发送具有特定传递延迟的 sqs 消息等功能。 实际上,我毫不拖延地完成了发送消息的实现。 像这样:

    @Override
    public boolean sendMessage(String queueName, String message) throws EventBrokerException {
        final String messageWithTransactionGuid = addTransactionGuidToMessage(message);
        jmsTemplate.convertAndSend(queueName, messageWithTransactionGuid);
        return isSuccess;
    }

我看了一些文章,也许我需要做这样的事情???

    jmsTemplate.convertAndSend(queueName, messageWithTransactionGuid, new MessagePostProcessor() {
            @Override
            public Message postProcessMessage(Message message) throws JMSException {
                message.setIntProperty(/*specify field name and delay seconds*/);
                return message;
            }
        });

但是我没有看到任何示例,我阅读了源代码并没有找到指定的内容,有人可以帮忙吗?

所以我做的是一个简单的方法:

    private Boolean doSendMessage(String queueName, String message, long deliveryDelay){

        jmsTemplate.setDeliveryDelay(deliveryDelay); 
       jmsTemplate.convertAndSend(queueName, message);
        jmsTemplate.setDeliveryDelay(DEFAULT_MESSAGE_DELIVERY_DELAY);
        return isSuccess;
    }

此处DEFAULT_MESSAGE_DELIVERY_DELAY为-1。

我注入了jsmTemplate,还有setDeliveryDelay和resetDeliveryDelay