MemoryEvaluateResource.java
package io.extact.rms.platform.health;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.event.Event;
import jakarta.inject.Inject;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.QueryParam;
import org.eclipse.microprofile.openapi.annotations.Operation;
import org.eclipse.microprofile.openapi.annotations.media.Content;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import org.eclipse.microprofile.openapi.annotations.parameters.Parameter;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
import org.eclipse.microprofile.openapi.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import io.extact.rms.platform.health.MemoryHealthCheck.MemoryLivenessEvaluator;
@Path("/memeval")
@ApplicationScoped
@Slf4j
public class MemoryEvaluateResource {
@Inject
private Event<MemoryLivenessEvaluator> event;
@GET
@Tag(name = "SeverManagement API")
@Operation(
operationId = "resetEvaluateMethod",
summary = "memory-health-check-livenessのチェック方法の変更",
description = "/health/readyによるReadinessProbeのmemory-health-check-livenessのチェック方法を変更する")
@Parameter(name = "method", description = "評価方法。abs:絶対評価, rel:相対評価", required = true,
schema = @Schema(implementation = String.class))
@Parameter(name = "val", description = "閾値。絶対評価の場合は使用ヒープサイズ, 相対評価の場合はヒープの使用率、", required = true,
schema = @Schema(implementation = Long.class))
@APIResponse(
responseCode = "200",
description = "成功。常に\"accepted.\"を返す",
content = @Content(mediaType = "application/text"))
public String resetEvaluateMethod(@QueryParam("method") String method, @QueryParam("val") long val){
log.info("reset memory evaluate method. methdo={}, val={}", method, val);
event.fire(MemoryLivenessEvaluator.of(method, val));
return "accepted.";
}
}