[英]Spring Boot Health Check - SQS Consumer
SQS是否有Spring Boot Actuator運行狀況檢查端點? 我已經建立了一個SQS使用者,我想檢查SQS是否已啟動並正在運行。 我不是使用JMSlistener連接到SQS,而是使用Spring Cloud Libraries。
我實現了以下運行狀況檢查端點。 當我刪除隊列並嘗試運行狀況檢查端點時,這將返回以下錯誤。 如果存在連接問題,或者SQS服務出現故障,我是否會收到類似的錯誤,最終將導致運行狀況檢查端點失敗?
com.amazonaws.services.sqs.model.QueueDoesNotExistException:此wsdl版本的指定隊列不存在。 (服務:AmazonSQS;狀態代碼:400;錯誤代碼:AWS.SimpleQueueService.NonExistentQueue;請求ID:cd8e205d-dc43-535e-931f-7332733bd16c)
public class SqsQueueHealthIndicator extends AbstractHealthIndicator {
private final AmazonSQSAsync amazonSQSAsync;
private final String queueName;
public SqsQueueHealthIndicator(AmazonSQSAsync amazonSQSAsync, String queueName) {
this.amazonSQSAsync = amazonSQSAsync;
this.queueName = queueName;
}
@Override
protected void doHealthCheck(Health.Builder builder) {
try {
amazonSQSAsync.getQueueUrl(queueName);
builder.up();
} catch (QueueDoesNotExistException e) {
e.printStackTrace();
builder.down(e);
}
}
}
豆子
@Bean
SqsQueueHealthIndicator queueHealthIndicator(@Autowired AmazonSQSAsync amazonSQSAsync, @Value("${sqs.queueName}") String queueName) {
return new SqsQueueHealthIndicator(amazonSQSAsync, queueName);
}
@Bean
SqsQueueHealthIndicator deadLetterQueueHealthIndicator(@Autowired AmazonSQSAsync amazonSQSAsync, @Value("${sqs.dlQueueName}") String deadLetterQueueName) {
return new SqsQueueHealthIndicator(amazonSQSAsync, deadLetterQueueName);
}
您必須編寫如下的自定義運行狀況檢查,以通過使用AWS Java SDK lib調用getQueueUrl來檢查隊列是否存在。
@Component
public class SQSHealthCheck implements HealthIndicator {
@Override
public Health health() {
int errorCode = check(); // perform some specific health check
if (errorCode != 0) {
return Health.down()
.withDetail("Error Code", errorCode).build();
}
return Health.up().build();
}
public int check() {
/**
your logic to check queue exists or not using by calling getQueueUrl . e.g you will get queue url of a queue named "SampleQueue" like https://sqs.us-east-1.amazonaws.com/12XXX56789XXXX/SampleQueue
**/
return 0; // 0 or 1 based on result
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.