diff --git a/powerjob-remote/pom.xml b/powerjob-remote/pom.xml index ee3e7b8b..e6c935ff 100644 --- a/powerjob-remote/pom.xml +++ b/powerjob-remote/pom.xml @@ -21,6 +21,26 @@ 8 8 UTF-8 + + 5.9.0 + 1.2.9 + + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + + ch.qos.logback + logback-classic + ${logback.version} + test + + + \ No newline at end of file diff --git a/powerjob-remote/powerjob-remote-framework/pom.xml b/powerjob-remote/powerjob-remote-framework/pom.xml index 146d671f..de5f39a6 100644 --- a/powerjob-remote/powerjob-remote-framework/pom.xml +++ b/powerjob-remote/powerjob-remote-framework/pom.xml @@ -20,8 +20,7 @@ 4.2.0 0.10.2 - 5.9.0 - 1.2.9 + @@ -37,20 +36,6 @@ ${reflections.version} - - - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test - - - - ch.qos.logback - logback-classic - ${logback.version} - test - \ No newline at end of file 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 861cf64a..22fd27a1 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 @@ -19,11 +19,6 @@ import tech.powerjob.remote.framework.actor.Handler; @Actor(path = "benchmark") public class BenchmarkActor { - @Handler(path = "simple") - public String simpleRequest(String k) { - return k; - } - @Handler(path = "standard") public BenchmarkResponse processStandardRequest(BenchmarkRequest request) { log.info("[BenchmarkActor] receive request: {}", request); diff --git a/powerjob-remote/powerjob-remote-impl-http/src/main/java/tech/powerjob/remote/http/HttpVertxCSInitializer.java b/powerjob-remote/powerjob-remote-impl-http/src/main/java/tech/powerjob/remote/http/HttpVertxCSInitializer.java index a3f0b1f7..73d069db 100644 --- a/powerjob-remote/powerjob-remote-impl-http/src/main/java/tech/powerjob/remote/http/HttpVertxCSInitializer.java +++ b/powerjob-remote/powerjob-remote-impl-http/src/main/java/tech/powerjob/remote/http/HttpVertxCSInitializer.java @@ -12,8 +12,6 @@ import io.vertx.ext.web.Router; import io.vertx.ext.web.RoutingContext; import io.vertx.ext.web.handler.BodyHandler; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ArrayUtils; -import tech.powerjob.common.PowerSerializable; import tech.powerjob.common.exception.PowerJobException; import tech.powerjob.remote.framework.actor.ActorInfo; import tech.powerjob.remote.framework.actor.HandlerInfo; @@ -70,12 +68,12 @@ public class HttpVertxCSInitializer implements CSInitializer { // 处理请求响应 router.route().handler(BodyHandler.create()); actorInfos.forEach(actorInfo -> { - log.info("[HttpVertxCSInitializer] start to bind Actor[{}]'s handler!", actorInfo.getAnno().path()); + log.info("[PowerJob-Vertx] start to bind Actor[{}]'s handler!", actorInfo.getAnno().path()); Optional.ofNullable(actorInfo.getHandlerInfos()).orElse(Collections.emptyList()).forEach(handlerInfo -> { Method method = handlerInfo.getMethod(); String handlerHttpPath = handlerInfo.getLocation().toPath(); ProcessType processType = handlerInfo.getAnno().processType(); - log.info("[HttpVertxCSInitializer] register Handler with[path={},methodName={},processType={}]", handlerHttpPath, method.getName(), processType); + log.info("[PowerJob-Vertx] start to register Handler with[path={},methodName={},processType={}]", handlerHttpPath, method.getName(), processType); Handler routingContextHandler = buildRequestHandler(actorInfo, handlerInfo); Route route = router.post(handlerHttpPath); @@ -84,6 +82,7 @@ public class HttpVertxCSInitializer implements CSInitializer { } else { route.handler(routingContextHandler); } + log.info("[PowerJob-Vertx] register Handler[path={},methodName={}] successfully!", handlerHttpPath, method.getName()); }); }); @@ -104,11 +103,19 @@ public class HttpVertxCSInitializer implements CSInitializer { } private Handler buildRequestHandler(ActorInfo actorInfo, HandlerInfo handlerInfo) { + Method method = handlerInfo.getMethod(); + Optional> powerSerializeClz = RemoteUtils.findPowerSerialize(method.getParameterTypes()); + + // 内部框架,严格模式,绑定失败直接报错 + if (!powerSerializeClz.isPresent()) { + throw new PowerJobException("can't find any 'PowerSerialize' object in handler args: " + handlerInfo.getLocation()); + } + return ctx -> { final RequestBody body = ctx.body(); - final Object convertResult = convertResult(body, handlerInfo); + final Object convertResult = body.asPojo(powerSerializeClz.get()); try { - Object response = handlerInfo.getMethod().invoke(actorInfo.getActor(), convertResult); + Object response = method.invoke(actorInfo.getActor(), convertResult); if (response != null) { if (response instanceof String) { ctx.end((String) response); @@ -126,18 +133,6 @@ public class HttpVertxCSInitializer implements CSInitializer { }; } - private static Object convertResult(RequestBody body, HandlerInfo handlerInfo) { - final Method method = handlerInfo.getMethod(); - - Optional> powerSerializeClz = RemoteUtils.findPowerSerialize(method.getParameterTypes()); - // 内部框架,严格模式,绑定失败直接报错 - if (!powerSerializeClz.isPresent()) { - throw new PowerJobException("can't find any 'PowerSerialize' object in handler args: " + handlerInfo.getLocation()); - } - - return body.asPojo(powerSerializeClz.get()); - } - @Override diff --git a/powerjob-remote/powerjob-remote-impl-http/src/test/java/tech/powerjob/remote/http/HttpVertxCSInitializerTest.java b/powerjob-remote/powerjob-remote-impl-http/src/test/java/tech/powerjob/remote/http/HttpVertxCSInitializerTest.java new file mode 100644 index 00000000..02ff2e66 --- /dev/null +++ b/powerjob-remote/powerjob-remote-impl-http/src/test/java/tech/powerjob/remote/http/HttpVertxCSInitializerTest.java @@ -0,0 +1,37 @@ +package tech.powerjob.remote.http; + +import com.google.common.collect.Sets; +import org.junit.jupiter.api.Test; +import tech.powerjob.common.enums.Protocol; +import tech.powerjob.remote.framework.base.Address; +import tech.powerjob.remote.framework.cs.CSInitializer; +import tech.powerjob.remote.framework.cs.CSInitializerConfig; +import tech.powerjob.remote.framework.engine.EngineConfig; +import tech.powerjob.remote.framework.engine.EngineOutput; +import tech.powerjob.remote.framework.engine.RemoteEngine; +import tech.powerjob.remote.framework.engine.impl.PowerJobRemoteEngine; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * HttpVertxCSInitializerTest + * + * @author tjq + * @since 2023/1/2 + */ +class HttpVertxCSInitializerTest { + + @Test + void testHttpVertxCSInitializerTest() { + + final Address address = new Address().setPort(7890).setHost("127.0.0.1"); + + EngineConfig engineConfig = new EngineConfig() + .setTypes(Sets.newHashSet(Protocol.HTTP.name())) + .setBindAddress(address); + + RemoteEngine engine = new PowerJobRemoteEngine(); + final EngineOutput engineOutput = engine.start(engineConfig); + } + +} \ No newline at end of file