feat: 헬스 상태 수동 변경 컨트롤러 구현

This commit is contained in:
dongHyo
2022-05-06 13:34:12 +09:00
parent 58900e2331
commit 3cbb3f0ee8
3 changed files with 74 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
package com.ticketing.server.global.health;
import javax.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.Status;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/l7check")
@RequiredArgsConstructor
public class L7checkController {
private final MutableHealthIndicator indicator;
@GetMapping
public ResponseEntity health() {
Health health = indicator.health();
boolean isUp = health.getStatus().equals(Status.UP);
return ResponseEntity
.status(isUp ? HttpStatus.OK : HttpStatus.SERVICE_UNAVAILABLE)
.build();
}
@DeleteMapping
@ResponseStatus(HttpStatus.NO_CONTENT)
public void down(HttpServletRequest request) {
indicator.setHealth(Health.down().build());
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void up(HttpServletRequest request) {
indicator.setHealth(Health.up().build());
}
}

View File

@@ -0,0 +1,20 @@
package com.ticketing.server.global.health;
import java.util.concurrent.atomic.AtomicReference;
import org.springframework.boot.actuate.health.Health;
public class ManualHealthIndicator implements MutableHealthIndicator {
private final AtomicReference<Health> healthRef = new AtomicReference<>(Health.up().build());
@Override
public void setHealth(Health health) {
healthRef.set(health);
}
@Override
public Health health() {
return healthRef.get();
}
}

View File

@@ -0,0 +1,10 @@
package com.ticketing.server.global.health;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
public interface MutableHealthIndicator extends HealthIndicator {
void setHealth(Health health);
}