[ISSUE #94] Proto enhancement for "RIP‐83 Lite Topic" (#95)

diff --git a/apache/rocketmq/v2/definition.proto b/apache/rocketmq/v2/definition.proto
index 468c410..2513bac 100644
--- a/apache/rocketmq/v2/definition.proto
+++ b/apache/rocketmq/v2/definition.proto
@@ -146,6 +146,9 @@
   // Messages that are transactional. Only committed messages are delivered to
   // subscribers.
   TRANSACTION = 4;
+
+  // lite topic
+  LITE = 5;
 }
 
 enum DigestType {
@@ -186,6 +189,8 @@
   PUSH_CONSUMER = 2;
   SIMPLE_CONSUMER = 3;
   PULL_CONSUMER = 4;
+  LITE_PUSH_CONSUMER = 5;
+  LITE_SIMPLE_CONSUMER = 6;
 }
 
 enum Encoding {
@@ -270,6 +275,9 @@
 
   // Information to identify whether this message is from dead letter queue.
   optional DeadLetterQueue dead_letter_queue = 20;
+
+  // lite topic
+  optional string lite_topic = 21;
 }
 
 message DeadLetterQueue {
@@ -348,6 +356,8 @@
   ILLEGAL_POLLING_TIME = 40018;
   // Offset is illegal.
   ILLEGAL_OFFSET = 40019;
+  // Format of lite topic is illegal.
+  ILLEGAL_LITE_TOPIC = 40020;
 
   // Generic code indicates that the client request lacks valid authentication
   // credentials for the requested resource.
@@ -389,6 +399,10 @@
   // Requests are throttled.
   TOO_MANY_REQUESTS = 42900;
 
+  // LiteTopic related quota exceeded
+  LITE_TOPIC_QUOTA_EXCEEDED = 42901;
+  LITE_SUBSCRIPTION_QUOTA_EXCEEDED = 42902;
+
   // Generic code for the case that the server is unwilling to process the request because its header fields are too large.
   // The request may be resubmitted after reducing the size of the request header fields.
   REQUEST_HEADER_FIELDS_TOO_LARGE = 43100;
@@ -548,6 +562,21 @@
   // Long-polling timeout for `ReceiveMessageRequest`, which is essential for
   // push consumer.
   optional google.protobuf.Duration long_polling_timeout = 5;
+
+  // Only lite push consumer
+  // client-side lite subscription quota limit
+  optional int32 lite_subscription_quota = 6;
+
+  // Only lite push consumer
+  // Maximum length limit for lite topic
+  optional int32 max_lite_topic_size = 7;
+}
+
+enum LiteSubscriptionAction {
+  PARTIAL_ADD = 0;
+  PARTIAL_REMOVE = 1;
+  COMPLETE_ADD = 2;
+  COMPLETE_REMOVE = 3;
 }
 
 message Metric {
diff --git a/apache/rocketmq/v2/service.proto b/apache/rocketmq/v2/service.proto
index 18db185..136b3ee 100644
--- a/apache/rocketmq/v2/service.proto
+++ b/apache/rocketmq/v2/service.proto
@@ -114,6 +114,7 @@
 message AckMessageEntry {
   string message_id = 1;
   string receipt_handle = 2;
+  optional string lite_topic = 3;
 }
 
 message AckMessageRequest {
@@ -148,6 +149,7 @@
   string message_id = 4;
   int32 delivery_attempt = 5;
   int32 max_delivery_attempts = 6;
+  optional string lite_topic = 7;
 }
 
 message ForwardMessageToDeadLetterQueueResponse { Status status = 1; }
@@ -193,6 +195,10 @@
   string transaction_id = 2;
 }
 
+message NotifyUnsubscribeLiteCommand {
+  string lite_topic = 1;
+}
+
 message TelemetryCommand {
   optional Status status = 1;
 
@@ -221,6 +227,9 @@
 
     // Request client to reconnect server use the latest endpoints.
     ReconnectEndpointsCommand reconnect_endpoints_command = 8;
+
+    // Request client to unsubscribe lite topic.
+    NotifyUnsubscribeLiteCommand notify_unsubscribe_lite_command = 9;
   }
 }
 
@@ -311,6 +320,21 @@
   string message_id = 2;
 }
 
+message SyncLiteSubscriptionRequest {
+  LiteSubscriptionAction action = 1;
+  // bindTopic for lite push consumer
+  Resource topic = 2;
+  // consumer group
+  Resource group = 3;
+  // lite subscription set of lite topics
+  repeated string lite_topic_set = 4;
+  optional int64 version = 5;
+}
+
+message SyncLiteSubscriptionResponse {
+  Status status = 1;
+}
+
 // For all the RPCs in MessagingService, the following error handling policies
 // apply:
 //
@@ -440,4 +464,8 @@
   // for normal message, not supported for now.
   rpc RecallMessage(RecallMessageRequest) returns (RecallMessageResponse) {
   }
+
+  // Sync lite subscription info, lite push consumer only
+  rpc SyncLiteSubscription(SyncLiteSubscriptionRequest) returns (SyncLiteSubscriptionResponse) {}
+
 }
\ No newline at end of file
diff --git a/java/VERSION b/java/VERSION
index b9d2bdf..50aea0e 100644
--- a/java/VERSION
+++ b/java/VERSION
@@ -1 +1 @@
-2.0.5
\ No newline at end of file
+2.1.0
\ No newline at end of file