You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by yu...@apache.org on 2022/06/20 04:17:40 UTC

[rocketmq] 02/02: Revert "Add new APIs for producer (#3987)"

This is an automated email from the ASF dual-hosted git repository.

yukon pushed a commit to branch 5.0.0-beta
in repository https://gitbox.apache.org/repos/asf/rocketmq.git

commit 96e9e48676acb92541a12531400e79a879c9877b
Author: 凌楚 <ya...@alibaba-inc.com>
AuthorDate: Mon Jun 20 11:49:06 2022 +0800

    Revert "Add new APIs for producer (#3987)"
    
    This reverts commit 8fc952d20c5b265e2d652fb556999a8e9f8df1a8.
---
 apis/pom.xml                                       |  39 -------
 .../apache/rocketmq/apis/ClientConfiguration.java  |  61 -----------
 .../rocketmq/apis/ClientConfigurationBuilder.java  |  72 ------------
 .../rocketmq/apis/ClientServiceProvider.java       |  52 ---------
 .../org/apache/rocketmq/apis/MessageQueue.java     |  24 ----
 .../apache/rocketmq/apis/SessionCredentials.java   |  58 ----------
 .../rocketmq/apis/SessionCredentialsProvider.java  |  30 -----
 .../apis/StaticSessionCredentialsProvider.java     |  35 ------
 .../apis/exception/AuthenticationException.java    |  31 ------
 .../apis/exception/AuthorisationException.java     |  35 ------
 .../rocketmq/apis/exception/ClientException.java   |  72 ------------
 .../apache/rocketmq/apis/exception/ErrorCode.java  |  84 --------------
 .../apis/exception/FlowControlException.java       |  25 -----
 .../rocketmq/apis/exception/NetworkException.java  |  28 -----
 .../exception/RemoteIllegalArgumentException.java  |  25 -----
 .../apis/exception/ResourceNotFoundException.java  |  25 -----
 .../apis/exception/ResourceNotMatchException.java  |  24 ----
 .../rocketmq/apis/exception/TimeoutException.java  |  28 -----
 .../org/apache/rocketmq/apis/message/Message.java  |  77 -------------
 .../rocketmq/apis/message/MessageBuilder.java      |  91 ----------------
 .../apache/rocketmq/apis/message/MessageId.java    |  38 -------
 .../rocketmq/apis/message/MessageIdVersion.java    |  29 -----
 .../apache/rocketmq/apis/message/MessageView.java  | 121 ---------------------
 .../apache/rocketmq/apis/producer/Producer.java    | 100 -----------------
 .../rocketmq/apis/producer/ProducerBuilder.java    |  82 --------------
 .../apache/rocketmq/apis/producer/SendReceipt.java |  29 -----
 .../apache/rocketmq/apis/producer/Transaction.java |  47 --------
 .../rocketmq/apis/producer/TransactionChecker.java |  41 -------
 .../apis/producer/TransactionResolution.java       |  34 ------
 .../apis/retry/BackOffRetryPolicyBuilder.java      |  59 ----------
 .../rocketmq/apis/retry/BackoffRetryPolicy.java    |  86 ---------------
 .../apache/rocketmq/apis/retry/RetryPolicy.java    |  40 -------
 pom.xml                                            |   4 -
 33 files changed, 1626 deletions(-)

diff --git a/apis/pom.xml b/apis/pom.xml
deleted file mode 100644
index dead203f5..000000000
--- a/apis/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>rocketmq-all</artifactId>
-        <groupId>org.apache.rocketmq</groupId>
-        <version>5.0.0-BETA-SNAPSHOT</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>jar</packaging>
-    <artifactId>rocketmq-apis</artifactId>
-    <name>rocketmq-apis ${project.version}</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/ClientConfiguration.java b/apis/src/main/java/org/apache/rocketmq/apis/ClientConfiguration.java
deleted file mode 100644
index 3aab733a2..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/ClientConfiguration.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.time.Duration;
-
-/**
- * Common client configuration.
- */
-public class ClientConfiguration {
-    private final String endpoints;
-    private final SessionCredentialsProvider sessionCredentialsProvider;
-    private final Duration requestTimeout;
-    private final boolean enableTracing;
-
-    public static ClientConfigurationBuilder newBuilder() {
-        return new ClientConfigurationBuilder();
-    }
-
-    public ClientConfiguration(String endpoints, SessionCredentialsProvider sessionCredentialsProvider,
-        Duration requestTimeout, boolean enableTracing) {
-        this.endpoints = checkNotNull(endpoints, "endpoints should not be null");
-        this.sessionCredentialsProvider = checkNotNull(sessionCredentialsProvider, "credentialsProvider should not be"
-            + " null");
-        this.requestTimeout = checkNotNull(requestTimeout, "requestTimeout should be not null");
-        this.enableTracing = enableTracing;
-    }
-
-    public String getEndpoints() {
-        return endpoints;
-    }
-
-    public SessionCredentialsProvider getCredentialsProvider() {
-        return sessionCredentialsProvider;
-    }
-
-    public Duration getRequestTimeout() {
-        return requestTimeout;
-    }
-
-    public boolean isEnableTracing() {
-        return enableTracing;
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/ClientConfigurationBuilder.java b/apis/src/main/java/org/apache/rocketmq/apis/ClientConfigurationBuilder.java
deleted file mode 100644
index 52c3f60a9..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/ClientConfigurationBuilder.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.time.Duration;
-
-/**
- * Builder to set {@link ClientConfiguration}.
- */
-public class ClientConfigurationBuilder {
-    private String endpoints;
-    private SessionCredentialsProvider sessionCredentialsProvider;
-    private Duration requestTimeout;
-    private boolean enableTracing;
-
-    /**
-     * Configure the endpoints with which the SDK should communicate.
-     *
-     * <p>Endpoints here means address of service, complying with the following scheme(part square brackets is
-     * optional).
-     * <p>1. DNS scheme(default): dns:host[:port], host is the host to resolve via DNS, port is the port to return
-     * for each address. If not specified, 443 is used.
-     * <p>2. ipv4 scheme: ipv4:address:port[,address:port,...]
-     * <p>3. ipv6 scheme: ipv6:address:port[,address:port,...]
-     * <p>4. http/https scheme: http|https://host[:port], similar to DNS scheme, if port not specified, 443 is used.
-     *
-     * @param endpoints address of service.
-     * @return the client configuration builder instance.
-     */
-    public ClientConfigurationBuilder setEndpoints(String endpoints) {
-        checkNotNull(endpoints, "endpoints should not be not null");
-        this.endpoints = endpoints;
-        return this;
-    }
-
-    public ClientConfigurationBuilder setCredentialProvider(SessionCredentialsProvider sessionCredentialsProvider) {
-        this.sessionCredentialsProvider = checkNotNull(sessionCredentialsProvider, "credentialsProvider should not be "
-            + "null");
-        return this;
-    }
-
-    public ClientConfigurationBuilder setRequestTimeout(Duration requestTimeout) {
-        this.requestTimeout = checkNotNull(requestTimeout, "requestTimeout should not be not null");
-        return this;
-    }
-
-    public ClientConfigurationBuilder enableTracing(boolean enableTracing) {
-        this.enableTracing = enableTracing;
-        return this;
-    }
-
-    public ClientConfiguration build() {
-        return new ClientConfiguration(endpoints, sessionCredentialsProvider, requestTimeout, enableTracing);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/ClientServiceProvider.java b/apis/src/main/java/org/apache/rocketmq/apis/ClientServiceProvider.java
deleted file mode 100644
index 075f9ea9b..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/ClientServiceProvider.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis;
-
-import java.util.Iterator;
-import java.util.ServiceLoader;
-import org.apache.rocketmq.apis.message.MessageBuilder;
-import org.apache.rocketmq.apis.producer.ProducerBuilder;
-
-/**
- * Service provider to seek client, which load client according to
- * <a href="https://en.wikipedia.org/wiki/Service_provider_interface">Java SPI mechanism</a>.
- */
-public interface ClientServiceProvider {
-    static ClientServiceProvider loadService() {
-        final ServiceLoader<ClientServiceProvider> loaders = ServiceLoader.load(ClientServiceProvider.class);
-        final Iterator<ClientServiceProvider> iterators = loaders.iterator();
-        if (iterators.hasNext()) {
-            return iterators.next();
-        }
-        throw new UnsupportedOperationException("Client service provider not found");
-    }
-
-    /**
-     * Get the producer builder by current provider.
-     *
-     * @return the producer builder instance.
-     */
-    ProducerBuilder newProducerBuilder();
-
-    /**
-     * Get the message builder by current provider.
-     *
-     * @return the message builder instance.
-     */
-    MessageBuilder newMessageBuilder();
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/MessageQueue.java b/apis/src/main/java/org/apache/rocketmq/apis/MessageQueue.java
deleted file mode 100644
index 93df58662..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/MessageQueue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis;
-
-public interface MessageQueue {
-    String getTopic();
-
-    String getId();
-}
\ No newline at end of file
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/SessionCredentials.java b/apis/src/main/java/org/apache/rocketmq/apis/SessionCredentials.java
deleted file mode 100644
index 3161e88ab..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/SessionCredentials.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Optional;
-
-/**
- * Session credentials used in service authentications.
- */
-public class SessionCredentials {
-    private final String accessKey;
-    private final String accessSecret;
-    private final String securityToken;
-
-    public SessionCredentials(String accessKey, String accessSecret, String securityToken) {
-        this.accessKey = checkNotNull(accessKey, "accessKey should not be null");
-        this.accessSecret = checkNotNull(accessSecret, "accessSecret should not be null");
-        this.securityToken = checkNotNull(securityToken, "securityToken should not be null");
-    }
-
-    public SessionCredentials(String accessKey, String accessSecret) {
-        this.accessKey = checkNotNull(accessKey, "accessKey should not be null");
-        this.accessSecret = checkNotNull(accessSecret, "accessSecret should not be null");
-        this.securityToken = null;
-    }
-
-    public String getAccessKey() {
-        return accessKey;
-    }
-
-    public String getAccessSecret() {
-        return accessSecret;
-    }
-
-    public Optional<String> getSecurityToken() {
-        if (null == securityToken) {
-            return Optional.empty();
-        }
-        return Optional.of(securityToken);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/SessionCredentialsProvider.java b/apis/src/main/java/org/apache/rocketmq/apis/SessionCredentialsProvider.java
deleted file mode 100644
index c23ee278d..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/SessionCredentialsProvider.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis;
-
-/**
- * Abstract provider to provide {@link SessionCredentials}.
- */
-public interface SessionCredentialsProvider {
-    /**
-     * Get the provided credentials.
-     *
-     * @return provided credentials.
-     */
-    SessionCredentials getCredentials();
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/StaticSessionCredentialsProvider.java b/apis/src/main/java/org/apache/rocketmq/apis/StaticSessionCredentialsProvider.java
deleted file mode 100644
index c38982ca3..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/StaticSessionCredentialsProvider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis;
-
-public class StaticSessionCredentialsProvider implements SessionCredentialsProvider {
-    private final SessionCredentials credentials;
-
-    public StaticSessionCredentialsProvider(String accessKey, String accessSecret) {
-        this.credentials = new SessionCredentials(accessKey, accessSecret);
-    }
-
-    public StaticSessionCredentialsProvider(String accessKey, String accessSecret, String securityToken) {
-        this.credentials = new SessionCredentials(accessKey, accessSecret, securityToken);
-    }
-
-    @Override
-    public SessionCredentials getCredentials() {
-        return credentials;
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/AuthenticationException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/AuthenticationException.java
deleted file mode 100644
index d39be1b94..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/AuthenticationException.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-/**
- * The difference between {@link AuthorisationException} and {@link AuthenticationException} is that
- * {@link AuthenticationException} here means current user's identity could not be recognized.
- *
- * <p>For example, {@link AuthenticationException} will be thrown if access key is invalid.
- */
-public class AuthenticationException extends ClientException {
-    public AuthenticationException(ErrorCode code, String message, String requestId) {
-        super(code, message);
-        putMetadata(REQUEST_ID_KEY, requestId);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/AuthorisationException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/AuthorisationException.java
deleted file mode 100644
index 58c9cf187..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/AuthorisationException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-import org.apache.rocketmq.apis.message.Message;
-import org.apache.rocketmq.apis.producer.Producer;
-
-/**
- * The difference between {@link AuthenticationException} and {@link AuthorisationException} is that
- * {@link AuthorisationException} here means current users don't have permission to do current operation.
- *
- * <p>For example, current user is forbidden to send message to this topic, {@link AuthorisationException} will be
- * thrown in {@link Producer#send(Message)}.
- */
-public class AuthorisationException extends ClientException {
-    public AuthorisationException(ErrorCode code, String message, String requestId) {
-        super(code, message);
-        putMetadata(REQUEST_ID_KEY, requestId);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/ClientException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/ClientException.java
deleted file mode 100644
index cb34dec49..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/ClientException.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-import com.google.common.base.MoreObjects;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-
-/**
- * Base exception for all exception raised in client, each exception should derive from current class.
- * It should throw exception which is derived from {@link ClientException} rather than {@link ClientException} itself.
- */
-public abstract class ClientException extends Exception {
-    /**
-     * For those {@link ClientException} along with a remote procedure call, request id could be used to track the
-     * request.
-     */
-    protected static final String REQUEST_ID_KEY = "request-id";
-
-    private final ErrorCode errorCode;
-    private final Map<String, String> context;
-
-    ClientException(ErrorCode errorCode, String message, Throwable cause) {
-        super(message, cause);
-        this.errorCode = errorCode;
-        this.context = new HashMap<>();
-    }
-
-    ClientException(ErrorCode errorCode, String message) {
-        super(message);
-        this.errorCode = errorCode;
-        this.context = new HashMap<>();
-    }
-
-    @SuppressWarnings("SameParameterValue")
-    protected void putMetadata(String key, String value) {
-        context.put(key, value);
-    }
-
-    public Optional<String> getRequestId() {
-        final String requestId = context.get(REQUEST_ID_KEY);
-        return null == requestId ? Optional.empty() : Optional.of(requestId);
-    }
-
-    public ErrorCode getErrorCode() {
-        return errorCode;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(super.toString())
-            .add("errorCode", errorCode)
-            .add("context", context)
-            .toString();
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/ErrorCode.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/ErrorCode.java
deleted file mode 100644
index 327e3634b..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/ErrorCode.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-/**
- * Indicates the reason why the exception is thrown, it can be easily divided into the following categories.
- *
- * <blockquote>
- *
- * <table>
- * <caption>Error Categories and Exceptions</caption>
- * <tr>
- *     <th>Category
- *     <th>Exception
- *     <th>Code range
- * <tr>
- *     <td>Illegal client argument
- *     <td>{@link RemoteIllegalArgumentException}
- *     <p>{@link IllegalArgumentException}
- *     <td>{@code [101..199]}
- * <tr>
- *     <td>Authorisation failure
- *     <td>{@link AuthorisationException}
- *     <td>{@code [201..299]}
- * <tr>
- *     <td>Resource not found
- *     <td>{@link ResourceNotFoundException}
- *     <td>{@code [301..399]}
- * </table>
- *
- * </blockquote>
- */
-public enum ErrorCode {
-    /**
-     * Format of topic is illegal.
-     */
-    INVALID_TOPIC(101),
-    /**
-     * Format of consumer group is illegal.
-     */
-    INVALID_CONSUMER_GROUP(102),
-    /**
-     * Message is forbidden to publish.
-     */
-    MESSAGE_PUBLISH_FORBIDDEN(201),
-    /**
-     * Topic does not exist.
-     */
-    TOPIC_DOES_NOT_EXIST(301),
-    /**
-     * Consumer group does not exist.
-     */
-    CONSUMER_GROUP_DOES_NOT_EXIST(302);
-
-    private final int code;
-
-    ErrorCode(int code) {
-        this.code = code;
-    }
-
-    public int getCode() {
-        return code;
-    }
-
-    @Override
-    public String toString() {
-        return String.valueOf(code);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/FlowControlException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/FlowControlException.java
deleted file mode 100644
index 98001f67b..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/FlowControlException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-public class FlowControlException extends ClientException {
-    public FlowControlException(ErrorCode code, String message, String requestId) {
-        super(code, message);
-        putMetadata(REQUEST_ID_KEY, requestId);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/NetworkException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/NetworkException.java
deleted file mode 100644
index ad9c5ee05..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/NetworkException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-public class NetworkException extends ClientException {
-    public NetworkException(ErrorCode code, String message, Throwable cause) {
-        super(code, message, cause);
-    }
-
-    public NetworkException(ErrorCode code, String message) {
-        super(code, message);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/RemoteIllegalArgumentException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/RemoteIllegalArgumentException.java
deleted file mode 100644
index 4ae6ddae0..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/RemoteIllegalArgumentException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-public class RemoteIllegalArgumentException extends ClientException {
-    public RemoteIllegalArgumentException(ErrorCode code, String message, String requestId) {
-        super(code, message);
-        putMetadata(REQUEST_ID_KEY, requestId);
-    }
-}
\ No newline at end of file
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/ResourceNotFoundException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/ResourceNotFoundException.java
deleted file mode 100644
index 95860c8d9..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/ResourceNotFoundException.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-public class ResourceNotFoundException extends ClientException {
-    public ResourceNotFoundException(ErrorCode code, String message, String requestId) {
-        super(code, message);
-        putMetadata(REQUEST_ID_KEY, requestId);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/ResourceNotMatchException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/ResourceNotMatchException.java
deleted file mode 100644
index 2f80de148..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/ResourceNotMatchException.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-public class ResourceNotMatchException extends ClientException {
-    public ResourceNotMatchException(ErrorCode code, String message) {
-        super(code, message);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/exception/TimeoutException.java b/apis/src/main/java/org/apache/rocketmq/apis/exception/TimeoutException.java
deleted file mode 100644
index 11c77440a..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/exception/TimeoutException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.exception;
-
-public class TimeoutException extends ClientException {
-    public TimeoutException(ErrorCode code, String message, Throwable cause) {
-        super(code, message, cause);
-    }
-
-    public TimeoutException(ErrorCode code, String message) {
-        super(code, message);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/message/Message.java b/apis/src/main/java/org/apache/rocketmq/apis/message/Message.java
deleted file mode 100644
index 0503253d4..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/message/Message.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.message;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Optional;
-import org.apache.rocketmq.apis.producer.Producer;
-
-/**
- * Abstract message only used for {@link Producer}.
- */
-public interface Message {
-    /**
-     * Get the topic of message, which is the first classifier for message.
-     *
-     * @return topic of message.
-     */
-    String getTopic();
-
-    /**
-     * Get the <strong>deep copy</strong> of message body.
-     *
-     * @return the <strong>deep copy</strong> of message body.
-     */
-    byte[] getBody();
-
-    /**
-     * Get the <strong>deep copy</strong> of message properties.
-     *
-     * @return the <strong>deep copy</strong> of message properties.
-     */
-    Map<String, String> getProperties();
-
-    /**
-     * Get the tag of message, which is the second classifier besides topic.
-     *
-     * @return the tag of message.
-     */
-    Optional<String> getTag();
-
-    /**
-     * Get the key collection of message.
-     *
-     * @return <strong>the key collection</strong> of message.
-     */
-    Collection<String> getKeys();
-
-    /**
-     * Get the message group, which make sense only when topic type is fifo.
-     *
-     * @return message group, which is optional.
-     */
-    Optional<String> getMessageGroup();
-
-    /**
-     * Get the expected delivery timestamp, which make sense only when topic type is delay.
-     *
-     * @return message expected delivery timestamp, which is optional.
-     */
-    Optional<Long> getDeliveryTimestamp();
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/message/MessageBuilder.java b/apis/src/main/java/org/apache/rocketmq/apis/message/MessageBuilder.java
deleted file mode 100644
index dfe6e3267..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/message/MessageBuilder.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.message;
-
-import java.util.Collection;
-
-/**
- * Builder to config {@link Message}.
- */
-public interface MessageBuilder {
-    /**
-     * Set the topic for message.
-     *
-     * @param topic topic for the message.
-     * @return the message builder instance.
-     */
-    MessageBuilder setTopic(String topic);
-
-    /**
-     * Set the body for message.
-     *
-     * @param body body for the message.
-     * @return the message builder instance.
-     */
-    MessageBuilder setBody(byte[] body);
-
-    /**
-     * Set the tag for message.
-     *
-     * @param tag tag for the message.
-     * @return the message builder instance.
-     */
-    MessageBuilder setTag(String tag);
-
-    /**
-     * Set the key for message.
-     *
-     * @param key key for the message.
-     * @return the message builder instance.
-     */
-    MessageBuilder setKey(String key);
-
-    /**
-     * Set the key collection for message.
-     *
-     * @param keys key collection for the message.
-     * @return the message builder instance.
-     */
-    MessageBuilder setKeys(Collection<String> keys);
-
-    /**
-     * Set the group for message.
-     *
-     * @param messageGroup group for the message.
-     * @return the message builder instance.
-     */
-    MessageBuilder setMessageGroup(String messageGroup);
-
-    /**
-     * Add user property for message.
-     *
-     * @param key   single property key.
-     * @param value single property value.
-     * @return the message builder instance.
-     */
-    MessageBuilder addProperty(String key, String value);
-
-    /**
-     * Finalize the build of the {@link Message} instance.
-     *
-     * <p>Unique {@link MessageId} is generated after message building.</p>
-     *
-     * @return the message instance.
-     */
-    Message build();
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/message/MessageId.java b/apis/src/main/java/org/apache/rocketmq/apis/message/MessageId.java
deleted file mode 100644
index 01aa304b0..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/message/MessageId.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.message;
-
-/**
- * Abstract message id, the implement must override {@link Object#toString()}, which indicates the message id using
- * string form.
- */
-public interface MessageId {
-    /**
-     * Get the version of message id.
-     *
-     * @return the version of message id.
-     */
-    MessageIdVersion getVersion();
-
-    /**
-     * The implementation <strong>must</strong> override this method, which indicates the message id using string form.
-     *
-     * @return string-formed string id.
-     */
-    String toString();
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/message/MessageIdVersion.java b/apis/src/main/java/org/apache/rocketmq/apis/message/MessageIdVersion.java
deleted file mode 100644
index 1ef3683fe..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/message/MessageIdVersion.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.message;
-
-public enum MessageIdVersion {
-    /**
-     * V0 version, whose length is 32.
-     */
-    V0,
-    /**
-     * V1 version, whose length is 34 and begins with "01".
-     */
-    V1
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/message/MessageView.java b/apis/src/main/java/org/apache/rocketmq/apis/message/MessageView.java
deleted file mode 100644
index 8bd6e1045..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/message/MessageView.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.message;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Optional;
-import org.apache.rocketmq.apis.MessageQueue;
-
-/**
- * {@link MessageView} provides a read-only view for message, that's why setters do not exist here. In addition,
- * it only makes sense when {@link Message} is sent successfully, or it could be considered as a return receipt
- * for producer/consumer.
- */
-public interface MessageView {
-    /**
-     * Get the unique id of message.
-     *
-     * @return unique id.
-     */
-    MessageId getMessageId();
-
-    /**
-     * Get the topic of message.
-     *
-     * @return topic of message.
-     */
-    String getTopic();
-
-    /**
-     * Get the <strong>deep copy</strong> of message body, which makes the modification of return value does not
-     * affect the message itself.
-     *
-     * @return the <strong>deep copy</strong> of message body.
-     */
-    byte[] getBody();
-
-    /**
-     * Get the <strong>deep copy</strong> of message properties, which makes the modification of return value does
-     * not affect the message itself.
-     *
-     * @return the <strong>deep copy</strong> of message properties.
-     */
-    Map<String, String> getProperties();
-
-    /**
-     * Get the tag of message, which is optional.
-     *
-     * @return the tag of message, which is optional.
-     */
-    Optional<String> getTag();
-
-    /**
-     * Get the key collection of message.
-     *
-     * @return <strong>the key collection</strong> of message.
-     */
-    Collection<String> getKeys();
-
-    /**
-     * Get the message group, which is optional and only make sense only when topic type is fifo.
-     *
-     * @return message group, which is optional.
-     */
-    Optional<String> getMessageGroup();
-
-    /**
-     * Get the expected delivery timestamp, which make sense only when topic type is delay.
-     *
-     * @return message expected delivery timestamp, which is optional.
-     */
-    Optional<Long> getDeliveryTimestamp();
-
-    /**
-     * Get the born host of message.
-     *
-     * @return born host of message.
-     */
-    String getBornHost();
-
-    /**
-     * Get the born timestamp of message.
-     *
-     * @return born timestamp of message.
-     */
-    long getBornTimestamp();
-
-    /**
-     * Get the delivery attempt for message.
-     *
-     * @return delivery attempt.
-     */
-    int getDeliveryAttempt();
-
-    /**
-     * Get the {@link MessageQueue} of message.
-     *
-     * @return message queue.
-     */
-    MessageQueue getMessageQueue();
-
-    /**
-     * Get the position of message in {@link MessageQueue}.
-     */
-    long getOffset();
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/producer/Producer.java b/apis/src/main/java/org/apache/rocketmq/apis/producer/Producer.java
deleted file mode 100644
index 5a8c13130..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/producer/Producer.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.producer;
-
-import java.io.Closeable;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import org.apache.rocketmq.apis.exception.ClientException;
-import org.apache.rocketmq.apis.message.Message;
-
-/**
- * Producer is a thread-safe rocketmq client which is used to publish messages.
- *
- * <p>On account of network timeout or other reasons, rocketmq producer only promised the at-least-once semantics.
- * For producer, at-least-once semantics means potentially attempts are made at sending it, messages may be
- * duplicated but not lost.
- */
-public interface Producer extends Closeable {
-    /**
-     * Sends a message synchronously.
-     *
-     * <p>This method does not return until it gets the definitive result.
-     *
-     * @param message message to send.
-     */
-    SendReceipt send(Message message) throws ClientException;
-
-    /**
-     * Sends a transactional message synchronously.
-     *
-     * @param message     message to send.
-     * @param transaction transaction to bind.
-     * @return the message id assigned to the appointed message.
-     */
-    SendReceipt send(Message message, Transaction transaction) throws ClientException;
-
-    /**
-     * Sends a message asynchronously.
-     *
-     * <p>This method returns immediately, the result is included in the {@link CompletableFuture};
-     *
-     * @param message message to send.
-     * @return a future that indicates the result.
-     */
-    CompletableFuture<SendReceipt> sendAsync(Message message);
-
-    /**
-     * Sends batch messages synchronously.
-     *
-     * <p>This method does not return until it gets the definitive result.
-     *
-     * <p>All messages to send should have the same topic.
-     *
-     * @param messages batch messages to send.
-     * @return collection indicates the message id assigned to the appointed message, which keep the same order
-     * messages collection.
-     */
-    List<SendReceipt> send(List<Message> messages) throws ClientException;
-
-    /**
-     * Begins a transaction.
-     *
-     * <p>For example:
-     *
-     * <pre>{@code
-     * Transaction transaction = producer.beginTransaction();
-     * SendReceipt receipt1 = producer.send(message1, transaction);
-     * SendReceipt receipt2 = producer.send(message2, transaction);
-     * transaction.commit();
-     * }</pre>
-     *
-     * @return a transaction entity to execute commit/rollback operation.
-     */
-    Transaction beginTransaction() throws ClientException;
-
-    /**
-     * Close the producer and release all related resources.
-     *
-     * <p>This method does not return until all related resource is released. Once producer is closed, <strong>it could
-     * not be started once again.</strong> we maintained an FSM (finite-state machine) to record the different states
-     * for each producer.
-     */
-    @Override
-    void close();
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/producer/ProducerBuilder.java b/apis/src/main/java/org/apache/rocketmq/apis/producer/ProducerBuilder.java
deleted file mode 100644
index d4f8f1964..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/producer/ProducerBuilder.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.producer;
-
-import org.apache.rocketmq.apis.ClientConfiguration;
-import org.apache.rocketmq.apis.exception.ClientException;
-import org.apache.rocketmq.apis.message.Message;
-import org.apache.rocketmq.apis.retry.BackoffRetryPolicy;
-
-/**
- * Builder to config and start {@link Producer}.
- */
-public interface ProducerBuilder {
-    /**
-     * Set the client configuration for producer.
-     *
-     * @param clientConfiguration client's configuration.
-     * @return the producer builder instance.
-     */
-    ProducerBuilder setClientConfiguration(ClientConfiguration clientConfiguration);
-
-    /**
-     * Declare topics ahead of message sending/preparation.
-     *
-     * <p>Even though the declaration is not essential, we <strong>highly recommend</strong> to declare the topics in
-     * advance, which could help to discover potential mistakes.
-     *
-     * @param topics topics to send/prepare.
-     * @return the producer builder instance.
-     */
-    ProducerBuilder setTopics(String... topics);
-
-    /**
-     * Set the threads count for {@link Producer#sendAsync(Message)}.
-     *
-     * @return the producer builder instance.
-     */
-    ProducerBuilder setAsyncThreadCount(int count);
-
-    /**
-     * Set the retry policy to send message.
-     *
-     * @param retryPolicy policy to re-send message when failure encountered.
-     * @return the producer builder instance.
-     */
-    ProducerBuilder setRetryPolicy(BackoffRetryPolicy retryPolicy);
-
-    /**
-     * Set the transaction checker for producer.
-     *
-     * @param checker transaction checker.
-     * @return the produce builder instance.
-     */
-    ProducerBuilder setTransactionChecker(TransactionChecker checker);
-
-    /**
-     * Finalize the build of {@link Producer} instance and start.
-     *
-     * <p>The producer does a series of preparatory work during startup, which could help to identify more unexpected
-     * error earlier.
-     *
-     * <p>Especially, if this method is invoked more than once, different producer will be created and started.
-     *
-     * @return the producer instance.
-     */
-    Producer build() throws ClientException;
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/producer/SendReceipt.java b/apis/src/main/java/org/apache/rocketmq/apis/producer/SendReceipt.java
deleted file mode 100644
index 7d6b89957..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/producer/SendReceipt.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.producer;
-
-import org.apache.rocketmq.apis.MessageQueue;
-import org.apache.rocketmq.apis.message.MessageId;
-
-public interface SendReceipt {
-    MessageId getMessageId();
-
-    MessageQueue getMessageQueue();
-
-    long getOffset();
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/producer/Transaction.java b/apis/src/main/java/org/apache/rocketmq/apis/producer/Transaction.java
deleted file mode 100644
index 4ad720495..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/producer/Transaction.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.producer;
-
-import org.apache.rocketmq.apis.exception.ClientException;
-
-/**
- * An entity to describe an independent transaction.
- *
- * <p>Once request of commit of roll-back reached server, subsequent arrived commit or roll-back request in
- * {@link Transaction} would be ignored by server.
- *
- * <p>If transaction is not commit/roll-back in time, it is suspended until it is solved by {@link TransactionChecker}
- * or reach the end of life.
- */
-public interface Transaction {
-    /**
-     * Try to commit the transaction, which would expose the message before the transaction is closed if no exception
-     * thrown.
-     *
-     * <p>What you should pay more attention is that commit may be successful even exception thrown.
-     */
-    void commit() throws ClientException;
-
-    /**
-     * Try to roll back the transaction, which would expose the message before the transaction is closed if no exception
-     * thrown.
-     *
-     * <p>What you should pay more attention is that roll-back may be successful even exception thrown.
-     */
-    void rollback() throws ClientException;
-}
\ No newline at end of file
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/producer/TransactionChecker.java b/apis/src/main/java/org/apache/rocketmq/apis/producer/TransactionChecker.java
deleted file mode 100644
index e20eb4376..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/producer/TransactionChecker.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.producer;
-
-import org.apache.rocketmq.apis.message.MessageView;
-
-/**
- * Used to determine {@link TransactionResolution} when {@link Transaction} is not committed or roll-backed in time.
- * {@link Transaction#commit()} and {@link Transaction#rollback()} does not promise that it would be applied
- * successfully, so that checker here is necessary.
- *
- * <p>If {@link TransactionChecker#check(MessageView)} returns {@link TransactionResolution#UNKNOWN} or exception
- * raised during the invocation of {@link TransactionChecker#check(MessageView)}, the examination from server will be
- * performed periodically.
- */
-public interface TransactionChecker {
-    /**
-     * Server will solve the suspended transactional message by this method.
-     *
-     * <p>If exception was thrown in this method, which equals {@link TransactionResolution#UNKNOWN} is returned.
-     *
-     * @param messageView message to determine {@link TransactionResolution}.
-     * @return the transaction resolution.
-     */
-    TransactionResolution check(MessageView messageView);
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/producer/TransactionResolution.java b/apis/src/main/java/org/apache/rocketmq/apis/producer/TransactionResolution.java
deleted file mode 100644
index 084e609ce..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/producer/TransactionResolution.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.producer;
-
-public enum TransactionResolution {
-    /**
-     * Notify server that current transaction should be committed.
-     */
-    COMMIT,
-    /**
-     * Notify server that current transaction should be roll-backed.
-     */
-    ROLLBACK,
-    /**
-     * Notify server that the state of this transaction is not sure. You should be cautions before return unknown
-     * because the examination from server will be performed periodically.
-     */
-    UNKNOWN;
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/retry/BackOffRetryPolicyBuilder.java b/apis/src/main/java/org/apache/rocketmq/apis/retry/BackOffRetryPolicyBuilder.java
deleted file mode 100644
index 8addf9337..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/retry/BackOffRetryPolicyBuilder.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.retry;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.time.Duration;
-
-public class BackOffRetryPolicyBuilder {
-    private int maxAttempts = 3;
-    private Duration initialBackoff = Duration.ofMillis(100);
-    private Duration maxBackoff = Duration.ofSeconds(1);
-    private int backoffMultiplier = 2;
-
-    public BackOffRetryPolicyBuilder() {
-    }
-
-    BackOffRetryPolicyBuilder setMaxAttempts(int maxAttempts) {
-        checkArgument(maxAttempts > 0, "maxAttempts must be positive");
-        this.maxAttempts = maxAttempts;
-        return this;
-    }
-
-    BackOffRetryPolicyBuilder setInitialBackoff(Duration initialBackoff) {
-        this.initialBackoff = checkNotNull(initialBackoff, "initialBackoff should not be null");
-        return this;
-    }
-
-    BackOffRetryPolicyBuilder setMaxBackoff(Duration maxBackoff) {
-        this.maxBackoff = checkNotNull(maxBackoff, "maxBackoff should not be null");
-        return this;
-    }
-
-    BackOffRetryPolicyBuilder setBackoffMultiplier(int backoffMultiplier) {
-        checkArgument(backoffMultiplier > 0, "backoffMultiplier must be positive");
-        this.backoffMultiplier = backoffMultiplier;
-        return this;
-    }
-
-    BackoffRetryPolicy build() {
-        return new BackoffRetryPolicy(maxAttempts, initialBackoff, maxBackoff, backoffMultiplier);
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/retry/BackoffRetryPolicy.java b/apis/src/main/java/org/apache/rocketmq/apis/retry/BackoffRetryPolicy.java
deleted file mode 100644
index db71ba767..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/retry/BackoffRetryPolicy.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.retry;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import com.google.common.base.MoreObjects;
-import java.time.Duration;
-import java.util.Random;
-
-/**
- * The {@link BackoffRetryPolicy} defines a policy to do more attempts when failure is encountered, mainly refer to
- * <a href="https://github.com/grpc/proposal/blob/master/A6-client-retries.md">gRPC Retry Design</a>.
- */
-public class BackoffRetryPolicy implements RetryPolicy {
-    public static BackOffRetryPolicyBuilder newBuilder() {
-        return new BackOffRetryPolicyBuilder();
-    }
-
-    private final Random random;
-    private final int maxAttempts;
-    private final Duration initialBackoff;
-    private final Duration maxBackoff;
-    private final int backoffMultiplier;
-
-    public BackoffRetryPolicy(int maxAttempts, Duration initialBackoff, Duration maxBackoff, int backoffMultiplier) {
-        checkArgument(maxBackoff.compareTo(initialBackoff) <= 0, "initialBackoff should not be minor than maxBackoff");
-        checkArgument(maxAttempts > 0, "maxAttempts must be positive");
-        this.random = new Random();
-        this.maxAttempts = maxAttempts;
-        this.initialBackoff = checkNotNull(initialBackoff, "initialBackoff should not be null");
-        this.maxBackoff = maxBackoff;
-        this.backoffMultiplier = backoffMultiplier;
-    }
-
-    @Override
-    public int getMaxAttempts() {
-        return maxAttempts;
-    }
-
-    @Override
-    public Duration getNextAttemptDelay(int attempt) {
-        checkArgument(attempt > 0, "attempt must be positive");
-        int randomNumberBound = Math.min(initialBackoff.getNano() * (backoffMultiplier ^ (attempt - 1)),
-            maxBackoff.getNano());
-        return Duration.ofNanos(random.nextInt(randomNumberBound));
-    }
-
-    public Duration getInitialBackoff() {
-        return initialBackoff;
-    }
-
-    public Duration getMaxBackoff() {
-        return maxBackoff;
-    }
-
-    public int getBackoffMultiplier() {
-        return backoffMultiplier;
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-            .add("maxAttempts", maxAttempts)
-            .add("initialBackoff", initialBackoff)
-            .add("maxBackoff", maxBackoff)
-            .add("backoffMultiplier", backoffMultiplier)
-            .toString();
-    }
-}
diff --git a/apis/src/main/java/org/apache/rocketmq/apis/retry/RetryPolicy.java b/apis/src/main/java/org/apache/rocketmq/apis/retry/RetryPolicy.java
deleted file mode 100644
index 53b079935..000000000
--- a/apis/src/main/java/org/apache/rocketmq/apis/retry/RetryPolicy.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.rocketmq.apis.retry;
-
-import java.time.Duration;
-
-/**
- * Internal interface for retry policy.
- */
-interface RetryPolicy {
-    /**
-     * Get the max attempt times for retry.
-     *
-     * @return max attempt times.
-     */
-    int getMaxAttempts();
-
-    /**
-     * Get await time after current attempts, the attempt index starts at 1.
-     *
-     * @param attempt current attempt.
-     * @return await time.
-     */
-    Duration getNextAttemptDelay(int attempt);
-}
diff --git a/pom.xml b/pom.xml
index 08e97dd68..5f6c4ed70 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,7 +106,6 @@
     </properties>
 
     <modules>
-        <module>apis</module>
         <module>client</module>
         <module>common</module>
         <module>broker</module>
@@ -279,9 +278,6 @@
                             <goal>prepare-agent-integration</goal>
                         </goals>
                         <configuration>
-                            <excludes>
-                                <exclude>**/apache/rocketmq/apis/*</exclude>
-                            </excludes>
                             <destFile>${project.build.directory}/jacoco-it.exec</destFile>
                             <propertyName>failsafeArgLine</propertyName>
                         </configuration>