diff --git a/example/pom.xml b/example/pom.xml
index c4a4e7835ad70..562a6fbffab51 100644
--- a/example/pom.xml
+++ b/example/pom.xml
@@ -38,6 +38,7 @@
rest-java-example
schema
session
+ subscription
trigger
udf
diff --git a/example/subscription/pom.xml b/example/subscription/pom.xml
new file mode 100644
index 0000000000000..0735cfea980c6
--- /dev/null
+++ b/example/subscription/pom.xml
@@ -0,0 +1,38 @@
+
+
+
+ 4.0.0
+
+ org.apache.iotdb
+ iotdb-examples
+ 1.3.7-SNAPSHOT
+
+ subscription-example
+ IoTDB: Example: Subscription Client
+
+
+ org.apache.iotdb
+ iotdb-subscription
+ ${project.version}
+
+
+
diff --git a/example/session/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java b/example/subscription/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java
similarity index 100%
rename from example/session/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java
rename to example/subscription/src/main/java/org/apache/iotdb/SubscriptionSessionExample.java
diff --git a/integration-test/pom.xml b/integration-test/pom.xml
index b9878143547ba..8c2f741692900 100644
--- a/integration-test/pom.xml
+++ b/integration-test/pom.xml
@@ -79,6 +79,11 @@
iotdb-session
1.3.7-SNAPSHOT
+
+ org.apache.iotdb
+ iotdb-subscription
+ 1.3.7-SNAPSHOT
+
org.apache.iotdb
iotdb-jdbc
diff --git a/iotdb-client/pom.xml b/iotdb-client/pom.xml
index ca54b4e3f488f..74480bf13ab27 100644
--- a/iotdb-client/pom.xml
+++ b/iotdb-client/pom.xml
@@ -36,6 +36,7 @@
jdbc
service-rpc
session
+ subscription
diff --git a/iotdb-client/service-rpc/pom.xml b/iotdb-client/service-rpc/pom.xml
index 162310f9c2f21..5e37611a2891e 100644
--- a/iotdb-client/service-rpc/pom.xml
+++ b/iotdb-client/service-rpc/pom.xml
@@ -40,11 +40,6 @@
common
${tsfile.version}
-
- org.apache.iotdb
- pipe-api
- ${project.version}
-
org.apache.tsfile
tsfile
diff --git a/iotdb-client/subscription/pom.xml b/iotdb-client/subscription/pom.xml
new file mode 100644
index 0000000000000..5c0c30e55bbe8
--- /dev/null
+++ b/iotdb-client/subscription/pom.xml
@@ -0,0 +1,81 @@
+
+
+
+ 4.0.0
+
+ org.apache.iotdb
+ iotdb-client
+ 1.3.7-SNAPSHOT
+
+ iotdb-subscription
+ IoTDB: Client: Subscription
+
+
+ org.apache.iotdb
+ pipe-api
+ 1.3.7-SNAPSHOT
+
+
+ org.apache.iotdb
+ isession
+ 1.3.7-SNAPSHOT
+
+
+ org.apache.iotdb
+ iotdb-session
+ 1.3.7-SNAPSHOT
+
+
+ org.apache.iotdb
+ service-rpc
+ 1.3.7-SNAPSHOT
+
+
+ org.apache.iotdb
+ iotdb-thrift-commons
+ 1.3.7-SNAPSHOT
+
+
+ org.apache.iotdb
+ iotdb-thrift
+ 1.3.7-SNAPSHOT
+
+
+ org.apache.tsfile
+ common
+ ${tsfile.version}
+
+
+ org.apache.tsfile
+ tsfile
+ ${tsfile.version}
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.apache.thrift
+ libthrift
+
+
+
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConfig.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConstant.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConstant.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConstant.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/ConsumerConstant.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConfig.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConstant.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConstant.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConstant.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/config/TopicConstant.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionConnectionException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIdentifierSemanticException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionIncompatibleHandlerException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionParameterNotValidException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPayloadExceedException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPayloadExceedException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPayloadExceedException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPayloadExceedException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPipeTimeoutException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPipeTimeoutException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPipeTimeoutException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPipeTimeoutException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPollTimeoutException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPollTimeoutException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPollTimeoutException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionPollTimeoutException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeCriticalException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionRuntimeNonCriticalException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionTimeoutException.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionTimeoutException.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionTimeoutException.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/exception/SubscriptionTimeoutException.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/ErrorPayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/ErrorPayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/ErrorPayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/ErrorPayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileInitPayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileInitPayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileInitPayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileInitPayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FilePiecePayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FilePiecePayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FilePiecePayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FilePiecePayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileSealPayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileSealPayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileSealPayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/FileSealPayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollFilePayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollFilePayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollFilePayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollFilePayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollPayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollPayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollPayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollPayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollTabletsPayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollTabletsPayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollTabletsPayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/PollTabletsPayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionCommitContext.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionCommitContext.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionCommitContext.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionCommitContext.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollPayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollPayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollPayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollPayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequest.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequest.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequest.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequest.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequestType.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequestType.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequestType.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollRequestType.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponse.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponse.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponse.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponse.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponseType.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponseType.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponseType.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/SubscriptionPollResponseType.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TabletsPayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TabletsPayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TabletsPayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TabletsPayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TerminationPayload.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TerminationPayload.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TerminationPayload.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/poll/TerminationPayload.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCloseReq.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCloseReq.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCloseReq.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCloseReq.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeCommitReq.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHandshakeReq.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHeartbeatReq.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHeartbeatReq.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHeartbeatReq.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeHeartbeatReq.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribePollReq.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestType.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestType.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestType.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestType.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestVersion.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestVersion.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestVersion.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeRequestVersion.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeSubscribeReq.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/request/PipeSubscribeUnsubscribeReq.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCloseResp.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCloseResp.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCloseResp.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCloseResp.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCommitResp.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCommitResp.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCommitResp.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeCommitResp.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHandshakeResp.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHeartbeatResp.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHeartbeatResp.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHeartbeatResp.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeHeartbeatResp.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribePollResp.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseType.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseType.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseType.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseType.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseVersion.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseVersion.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseVersion.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeResponseVersion.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeSubscribeResp.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeSubscribeResp.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeSubscribeResp.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeSubscribeResp.java
diff --git a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeUnsubscribeResp.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeUnsubscribeResp.java
similarity index 100%
rename from iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeUnsubscribeResp.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/rpc/subscription/payload/response/PipeSubscribeUnsubscribeResp.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSession.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/SubscriptionSessionConnection.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/AckStrategy.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/AckStrategy.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/AckStrategy.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/AckStrategy.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/AsyncCommitCallback.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/AsyncCommitCallback.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/AsyncCommitCallback.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/AsyncCommitCallback.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeListener.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeListener.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeListener.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeListener.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeResult.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeResult.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeResult.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/ConsumeResult.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionExecutorServiceManager.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionExecutorServiceManager.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionExecutorServiceManager.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionExecutorServiceManager.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionProvider.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionProvider.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionProvider.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionProvider.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionProviders.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionProviders.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionProviders.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionProviders.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionPullConsumer.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionPullConsumer.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionPullConsumer.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionPullConsumer.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionPushConsumer.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionPushConsumer.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionPushConsumer.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionPushConsumer.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/model/Subscription.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/model/Subscription.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/model/Subscription.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/model/Subscription.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/model/Topic.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/model/Topic.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/model/Topic.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/model/Topic.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionFileHandler.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionFileHandler.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionFileHandler.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionFileHandler.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessage.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessage.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessage.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessage.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageHandler.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageHandler.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageHandler.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageHandler.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageType.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageType.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageType.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionMessageType.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionRecordHandler.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionRecordHandler.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionRecordHandler.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionRecordHandler.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionTsFileHandler.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionTsFileHandler.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionTsFileHandler.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/payload/SubscriptionTsFileHandler.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/CollectionUtils.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/CollectionUtils.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/CollectionUtils.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/CollectionUtils.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/IdentifierUtils.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/IdentifierUtils.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/IdentifierUtils.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/IdentifierUtils.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/PollTimer.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/PollTimer.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/PollTimer.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/PollTimer.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/RandomStringGenerator.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/RandomStringGenerator.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/RandomStringGenerator.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/RandomStringGenerator.java
diff --git a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/SetPartitioner.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/SetPartitioner.java
similarity index 100%
rename from iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/util/SetPartitioner.java
rename to iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/util/SetPartitioner.java
diff --git a/iotdb-core/confignode/pom.xml b/iotdb-core/confignode/pom.xml
index 2186b1de1f692..fb22fd5b091f7 100644
--- a/iotdb-core/confignode/pom.xml
+++ b/iotdb-core/confignode/pom.xml
@@ -44,6 +44,11 @@
service-rpc
1.3.7-SNAPSHOT
+
+ org.apache.iotdb
+ iotdb-subscription
+ 1.3.7-SNAPSHOT
+
org.apache.iotdb
iotdb-consensus
diff --git a/iotdb-core/datanode/pom.xml b/iotdb-core/datanode/pom.xml
index bd6b101101637..2a019e1fc436b 100644
--- a/iotdb-core/datanode/pom.xml
+++ b/iotdb-core/datanode/pom.xml
@@ -39,6 +39,11 @@
service-rpc
1.3.7-SNAPSHOT
+
+ org.apache.iotdb
+ iotdb-subscription
+ 1.3.7-SNAPSHOT
+
org.apache.iotdb
iotdb-consensus
diff --git a/iotdb-core/node-commons/pom.xml b/iotdb-core/node-commons/pom.xml
index f17bdb7494616..30e92b31455ca 100644
--- a/iotdb-core/node-commons/pom.xml
+++ b/iotdb-core/node-commons/pom.xml
@@ -40,6 +40,11 @@
service-rpc
1.3.7-SNAPSHOT
+
+ org.apache.iotdb
+ iotdb-subscription
+ 1.3.7-SNAPSHOT
+
org.apache.tsfile
common