diff --git a/powerjob-remote/powerjob-remote-framework/src/main/java/tech/powerjob/remote/framework/BenchmarkActor.java b/powerjob-remote/powerjob-remote-framework/src/main/java/tech/powerjob/remote/framework/BenchmarkActor.java index e0b54b30..861cf64a 100644 --- a/powerjob-remote/powerjob-remote-framework/src/main/java/tech/powerjob/remote/framework/BenchmarkActor.java +++ b/powerjob-remote/powerjob-remote-framework/src/main/java/tech/powerjob/remote/framework/BenchmarkActor.java @@ -1,5 +1,11 @@ package tech.powerjob.remote.framework; +import lombok.Data; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomStringUtils; +import tech.powerjob.common.PowerSerializable; +import tech.powerjob.common.utils.CommonUtils; import tech.powerjob.remote.framework.actor.Actor; import tech.powerjob.remote.framework.actor.Handler; @@ -9,6 +15,7 @@ import tech.powerjob.remote.framework.actor.Handler; * @author tjq * @since 2023/1/1 */ +@Slf4j @Actor(path = "benchmark") public class BenchmarkActor { @@ -17,4 +24,52 @@ public class BenchmarkActor { return k; } + @Handler(path = "standard") + public BenchmarkResponse processStandardRequest(BenchmarkRequest request) { + log.info("[BenchmarkActor] receive request: {}", request); + BenchmarkResponse response = new BenchmarkResponse() + .setSuccess(true) + .setContent(request.getContent()) + .setProcessThread(Thread.currentThread().getName()) + .setServerReceiveTs(System.currentTimeMillis()); + if (request.getResponseSize() != 0 && request.getResponseSize() > 0) { + response.setExtra(RandomStringUtils.random(request.getResponseSize())); + } + if (request.getBlockingMills() !=0 && request.getBlockingMills() > 0) { + CommonUtils.easySleep(request.getBlockingMills()); + } + return response; + } + + + @Data + public static class BenchmarkRequest implements PowerSerializable { + /** + * 请求内容 + */ + private String content; + /** + * 期望的响应大小,可空 + */ + private Integer responseSize; + /** + * 阻塞时间,模拟 IO 耗时 + */ + private Integer blockingMills; + } + + @Data + @Accessors(chain = true) + public static class BenchmarkResponse implements PowerSerializable { + private boolean success; + /** + * 原路返回原来的 content + */ + private String content; + + private String processThread; + private long serverReceiveTs; + + private String extra; + } } diff --git a/powerjob-remote/powerjob-remote-impl-http/pom.xml b/powerjob-remote/powerjob-remote-impl-http/pom.xml index 489b01a9..387b5559 100644 --- a/powerjob-remote/powerjob-remote-impl-http/pom.xml +++ b/powerjob-remote/powerjob-remote-impl-http/pom.xml @@ -16,6 +16,7 @@ 8 UTF-8 + 4.3.7 4.2.0 @@ -27,6 +28,21 @@ ${powerjob-remote-framework.version} + + + io.vertx + vertx-core + ${vertx.version} + + + + io.vertx + vertx-web + ${vertx.version} + + + + \ No newline at end of file