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>