feat: 헬스 상태 수동 변경 컨트롤러 구현
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user