如何使用 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
您好,我想使用 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