用java,优雅地写一个rabbitTemplate.convertAndSend报错后的重试方法
时间: 2024-06-13 09:09:15 浏览: 152
以下是一个用Java优雅地写的rabbitTemplate.convertAndSend报错后的重试方法:
```java
public void sendWithRetry(String exchange, String routingKey, Object message) {
int maxAttempts = 3; // 最大重试次数
int attempts = 0; // 当前重试次数
boolean sent = false; // 是否发送成功
while (!sent && attempts < maxAttempts) {
try {
rabbitTemplate.convertAndSend(exchange, routingKey, message);
sent = true;
} catch (AmqpException e) {
attempts++;
if (attempts == maxAttempts) {
throw e;
}
try {
Thread.sleep(1000); // 等待1秒后重试
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
}
}
```
该方法使用了while循环来进行重试,当发送成功或达到最大重试次数时退出循环。在每次重试时,程序会等待1秒后再次尝试发送消息。如果在最大重试次数内仍然发送失败,则抛出AmqpException异常。
阅读全文