diff --git a/powerjob-remote/pom.xml b/powerjob-remote/pom.xml
index e6c935ff..166a7b17 100644
--- a/powerjob-remote/pom.xml
+++ b/powerjob-remote/pom.xml
@@ -11,6 +11,7 @@
pom
powerjob-remote-framework
+ powerjob-remote-benchmark
powerjob-remote-impl-http
powerjob-remote-impl-akka
diff --git a/powerjob-remote/powerjob-remote-benchmark/pom.xml b/powerjob-remote/powerjob-remote-benchmark/pom.xml
new file mode 100644
index 00000000..09f0b97b
--- /dev/null
+++ b/powerjob-remote/powerjob-remote-benchmark/pom.xml
@@ -0,0 +1,52 @@
+
+
+
+ powerjob-remote
+ tech.powerjob
+ 3.0.0
+
+ 4.0.0
+
+ powerjob-remote-benchmark
+
+
+ 8
+ 8
+ UTF-8
+
+ 1.2.9
+ 2.7.4
+ 4.2.0
+ 4.2.0
+
+
+
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${springboot.version}
+
+
+
+ tech.powerjob
+ powerjob-remote-impl-http
+ ${powerjob-remote-impl-http.version}
+
+
+
+ tech.powerjob
+ powerjob-remote-impl-akka
+ ${powerjob-remote-impl-akka.version}
+
+
+
+
\ No newline at end of file
diff --git a/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/BenchmarkApplication.java b/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/BenchmarkApplication.java
new file mode 100644
index 00000000..64dcb25e
--- /dev/null
+++ b/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/BenchmarkApplication.java
@@ -0,0 +1,19 @@
+package tech.powerjob.remote.benchmark;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 测试工程
+ * 用于 remote 协议压测
+ *
+ * @author tjq
+ * @since 2023/1/7
+ */
+@SpringBootApplication
+public class BenchmarkApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(BenchmarkApplication.class, args);
+ }
+}
diff --git a/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/EngineService.java b/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/EngineService.java
new file mode 100644
index 00000000..41079878
--- /dev/null
+++ b/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/EngineService.java
@@ -0,0 +1,68 @@
+package tech.powerjob.remote.benchmark;
+
+import com.google.common.collect.Lists;
+import lombok.Getter;
+import org.springframework.stereotype.Service;
+import tech.powerjob.common.enums.Protocol;
+import tech.powerjob.remote.framework.BenchmarkActor;
+import tech.powerjob.remote.framework.base.Address;
+import tech.powerjob.remote.framework.base.ServerType;
+import tech.powerjob.remote.framework.engine.EngineConfig;
+import tech.powerjob.remote.framework.engine.impl.PowerJobRemoteEngine;
+import tech.powerjob.remote.framework.transporter.Transporter;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * EngineService
+ *
+ * @author tjq
+ * @since 2023/1/7
+ */
+@Service
+public class EngineService {
+
+ public static final String HOST = "127.0.0.1";
+
+ public static final int SERVER_AKKA_PORT = 10001;
+ public static final int SERVER_HTTP_PORT = 10002;
+
+ public static final int CLIENT_AKKA_PORT = 20001;
+ public static final int CLIENT_HTTP_PORT = 20002;
+
+ @Getter
+ private Transporter akkaTransporter;
+ @Getter
+ private Transporter httpTransporter;
+
+ @PostConstruct
+ public void init() {
+ // http server
+ new PowerJobRemoteEngine().start(new EngineConfig()
+ .setServerType(ServerType.SERVER)
+ .setActorList(Lists.newArrayList(new BenchmarkActor()))
+ .setType(Protocol.HTTP.name())
+ .setBindAddress(new Address().setHost(HOST).setPort(SERVER_HTTP_PORT)));
+
+ // akka server
+ new PowerJobRemoteEngine().start(new EngineConfig()
+ .setServerType(ServerType.SERVER)
+ .setActorList(Lists.newArrayList(new BenchmarkActor()))
+ .setType(Protocol.AKKA.name())
+ .setBindAddress(new Address().setHost(HOST).setPort(SERVER_AKKA_PORT)));
+
+ // http client
+ httpTransporter = new PowerJobRemoteEngine().start(new EngineConfig()
+ .setServerType(ServerType.WORKER)
+ .setActorList(Lists.newArrayList(new BenchmarkActor()))
+ .setType(Protocol.HTTP.name())
+ .setBindAddress(new Address().setHost(HOST).setPort(CLIENT_HTTP_PORT))).getTransporter();
+
+ // akka client
+ akkaTransporter = new PowerJobRemoteEngine().start(new EngineConfig()
+ .setServerType(ServerType.WORKER)
+ .setActorList(Lists.newArrayList(new BenchmarkActor()))
+ .setType(Protocol.AKKA.name())
+ .setBindAddress(new Address().setHost(HOST).setPort(CLIENT_AKKA_PORT))).getTransporter();
+ }
+}
diff --git a/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/PressureTestController.java b/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/PressureTestController.java
new file mode 100644
index 00000000..290112c3
--- /dev/null
+++ b/powerjob-remote/powerjob-remote-benchmark/src/main/java/tech/powerjob/remote/benchmark/PressureTestController.java
@@ -0,0 +1,37 @@
+package tech.powerjob.remote.benchmark;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import tech.powerjob.remote.framework.BenchmarkActor;
+import tech.powerjob.remote.framework.base.Address;
+import tech.powerjob.remote.framework.base.HandlerLocation;
+import tech.powerjob.remote.framework.base.URL;
+
+import javax.annotation.Resource;
+
+import static tech.powerjob.remote.benchmark.EngineService.*;
+
+/**
+ * 压测测试入口
+ *
+ * @author tjq
+ * @since 2023/1/7
+ */
+@RestController
+@RequestMapping("/pressure")
+public class PressureTestController {
+
+ private static final HandlerLocation HL = new HandlerLocation().setRootPath("benchmark").setMethodPath("standard");
+
+ @Resource
+ private EngineService engineService;
+
+ @GetMapping("/httpTell")
+ public void httpTell(Integer blockMs, Integer responseSize, String content) {
+ URL url = new URL().setLocation(HL).setAddress(new Address().setPort(SERVER_HTTP_PORT).setHost(HOST));
+ final BenchmarkActor.BenchmarkRequest request = new BenchmarkActor.BenchmarkRequest().setContent(content).setBlockingMills(blockMs).setResponseSize(responseSize);
+ engineService.getHttpTransporter().tell(url, request);
+ }
+
+}
diff --git a/powerjob-remote/powerjob-remote-impl-akka/src/main/java/tech/powerjob/remote/akka/AkkaCSInitializer.java b/powerjob-remote/powerjob-remote-impl-akka/src/main/java/tech/powerjob/remote/akka/AkkaCSInitializer.java
index 3fc3b2a4..70af8292 100644
--- a/powerjob-remote/powerjob-remote-impl-akka/src/main/java/tech/powerjob/remote/akka/AkkaCSInitializer.java
+++ b/powerjob-remote/powerjob-remote-impl-akka/src/main/java/tech/powerjob/remote/akka/AkkaCSInitializer.java
@@ -81,7 +81,7 @@ public class AkkaCSInitializer implements CSInitializer {
log.info("[PowerJob-AKKA] start to process actor[path={},config={}]", rootPath, JsonUtils.toJSONString(actorConfig));
actorSystem.actorOf(AkkaProxyActor.props(actorInfo)
- .withDispatcher(actorConfig.getDispatcherName())
+ .withDispatcher("akka.".concat(actorConfig.getDispatcherName()))
.withRouter(new RoundRobinPool(cores)), actorConfig.getActorName());
});
diff --git a/powerjob-remote/powerjob-remote-impl-akka/src/main/resources/powerjob.akka.conf b/powerjob-remote/powerjob-remote-impl-akka/src/main/resources/powerjob.akka.conf
index 001a4177..f34e043e 100644
--- a/powerjob-remote/powerjob-remote-impl-akka/src/main/resources/powerjob.akka.conf
+++ b/powerjob-remote/powerjob-remote-impl-akka/src/main/resources/powerjob.akka.conf
@@ -111,7 +111,7 @@ akka {
}
##################### default config #####################
- common-dispatcher {
+ common-dispatcher {
# Dispatcher is the name of the event-based dispatcher
type = Dispatcher
# What kind of ExecutionService to use
diff --git a/powerjob-remote/powerjob-remote-impl-http/pom.xml b/powerjob-remote/powerjob-remote-impl-http/pom.xml
index 387b5559..3979cde2 100644
--- a/powerjob-remote/powerjob-remote-impl-http/pom.xml
+++ b/powerjob-remote/powerjob-remote-impl-http/pom.xml
@@ -10,6 +10,7 @@
4.0.0
powerjob-remote-impl-http
+ 4.2.0
8