All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.cloud.pubsub.spi.v1.PublisherSettings Maven / Gradle / Ivy

/*
 * Copyright 2016 Google Inc. All Rights Reserved.
 *
 * Licensed 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 com.google.cloud.pubsub.spi.v1;

import com.google.api.gax.core.ConnectionSettings;
import com.google.api.gax.core.RetrySettings;
import com.google.api.gax.grpc.ApiCallSettings;
import com.google.api.gax.grpc.BundlingCallSettings;
import com.google.api.gax.grpc.BundlingDescriptor;
import com.google.api.gax.grpc.BundlingSettings;
import com.google.api.gax.grpc.PageStreamingCallSettings;
import com.google.api.gax.grpc.PageStreamingDescriptor;
import com.google.api.gax.grpc.RequestIssuer;
import com.google.api.gax.grpc.ServiceApiSettings;
import com.google.api.gax.grpc.SimpleCallSettings;
import com.google.auth.Credentials;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.protobuf.Empty;
import com.google.pubsub.v1.DeleteTopicRequest;
import com.google.pubsub.v1.GetTopicRequest;
import com.google.pubsub.v1.ListTopicSubscriptionsRequest;
import com.google.pubsub.v1.ListTopicSubscriptionsResponse;
import com.google.pubsub.v1.ListTopicsRequest;
import com.google.pubsub.v1.ListTopicsResponse;
import com.google.pubsub.v1.PublishRequest;
import com.google.pubsub.v1.PublishResponse;
import com.google.pubsub.v1.PublisherGrpc;
import com.google.pubsub.v1.PubsubMessage;
import com.google.pubsub.v1.Topic;
import io.grpc.ManagedChannel;
import io.grpc.Status;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
import org.joda.time.Duration;

// AUTO-GENERATED DOCUMENTATION AND CLASS
/**
 * Settings class to configure an instance of {@link PublisherApi}.
 *
 * 

The default instance has everything set to sensible defaults: * *

    *
  • The default service address (pubsub.googleapis.com) and default port (443) * are used. *
  • Credentials are acquired automatically through Application Default Credentials. *
  • Retries are configured for idempotent methods but not for non-idempotent methods. *
* *

The builder of this class is recursive, so contained classes are themselves builders. * When build() is called, the tree of builders is called to create the complete settings * object. For example, to set the total timeout of createTopic to 30 seconds: * *

 * 
 * PublisherSettings.Builder publisherSettingsBuilder =
 *     PublisherSettings.defaultBuilder();
 * publisherSettingsBuilder.createTopicSettings().getRetrySettingsBuilder()
 *     .setTotalTimeout(Duration.standardSeconds(30));
 * PublisherSettings publisherSettings = publisherSettingsBuilder.build();
 * 
 * 
*/ @javax.annotation.Generated("by GAPIC") public class PublisherSettings extends ServiceApiSettings { /** * The default address of the service. */ private static final String DEFAULT_SERVICE_ADDRESS = "pubsub.googleapis.com"; /** * The default port of the service. */ private static final int DEFAULT_SERVICE_PORT = 443; /** * The default scopes of the service. */ private static final ImmutableList DEFAULT_SERVICE_SCOPES = ImmutableList.builder() .add("https://www.googleapis.com/auth/cloud-platform") .add("https://www.googleapis.com/auth/pubsub") .build(); /** * The default connection settings of the service. */ public static final ConnectionSettings DEFAULT_CONNECTION_SETTINGS = ConnectionSettings.newBuilder() .setServiceAddress(DEFAULT_SERVICE_ADDRESS) .setPort(DEFAULT_SERVICE_PORT) .provideCredentialsWith(DEFAULT_SERVICE_SCOPES) .build(); private final SimpleCallSettings createTopicSettings; private final BundlingCallSettings publishSettings; private final SimpleCallSettings getTopicSettings; private final PageStreamingCallSettings listTopicsSettings; private final PageStreamingCallSettings< ListTopicSubscriptionsRequest, ListTopicSubscriptionsResponse, String> listTopicSubscriptionsSettings; private final SimpleCallSettings deleteTopicSettings; /** * Returns the object with the settings used for calls to createTopic. */ public SimpleCallSettings createTopicSettings() { return createTopicSettings; } /** * Returns the object with the settings used for calls to publish. */ public BundlingCallSettings publishSettings() { return publishSettings; } /** * Returns the object with the settings used for calls to getTopic. */ public SimpleCallSettings getTopicSettings() { return getTopicSettings; } /** * Returns the object with the settings used for calls to listTopics. */ public PageStreamingCallSettings listTopicsSettings() { return listTopicsSettings; } /** * Returns the object with the settings used for calls to listTopicSubscriptions. */ public PageStreamingCallSettings< ListTopicSubscriptionsRequest, ListTopicSubscriptionsResponse, String> listTopicSubscriptionsSettings() { return listTopicSubscriptionsSettings; } /** * Returns the object with the settings used for calls to deleteTopic. */ public SimpleCallSettings deleteTopicSettings() { return deleteTopicSettings; } /** * Returns the default service address. */ public static String getDefaultServiceAddress() { return DEFAULT_SERVICE_ADDRESS; } /** * Returns the default service port. */ public static int getDefaultServicePort() { return DEFAULT_SERVICE_PORT; } /** * Returns the default service scopes. */ public static ImmutableList getDefaultServiceScopes() { return DEFAULT_SERVICE_SCOPES; } /** * Returns a builder for this class with recommended defaults. */ public static Builder defaultBuilder() { return Builder.createDefault(); } /** * Returns a new builder for this class. */ public static Builder newBuilder() { return new Builder(); } /** * Returns a builder containing all the values of this settings class. */ public Builder toBuilder() { return new Builder(this); } private PublisherSettings(Builder settingsBuilder) throws IOException { super( settingsBuilder.getChannelProvider(), settingsBuilder.getExecutorProvider(), settingsBuilder.getGeneratorName(), settingsBuilder.getGeneratorVersion(), settingsBuilder.getClientLibName(), settingsBuilder.getClientLibVersion()); createTopicSettings = settingsBuilder.createTopicSettings().build(); publishSettings = settingsBuilder.publishSettings().build(); getTopicSettings = settingsBuilder.getTopicSettings().build(); listTopicsSettings = settingsBuilder.listTopicsSettings().build(); listTopicSubscriptionsSettings = settingsBuilder.listTopicSubscriptionsSettings().build(); deleteTopicSettings = settingsBuilder.deleteTopicSettings().build(); } private static PageStreamingDescriptor LIST_TOPICS_PAGE_STR_DESC = new PageStreamingDescriptor() { @Override public Object emptyToken() { return ""; } @Override public ListTopicsRequest injectToken(ListTopicsRequest payload, Object token) { return ListTopicsRequest.newBuilder(payload).setPageToken((String) token).build(); } @Override public Object extractNextToken(ListTopicsResponse payload) { return payload.getNextPageToken(); } @Override public Iterable extractResources(ListTopicsResponse payload) { return payload.getTopicsList(); } }; private static PageStreamingDescriptor< ListTopicSubscriptionsRequest, ListTopicSubscriptionsResponse, String> LIST_TOPIC_SUBSCRIPTIONS_PAGE_STR_DESC = new PageStreamingDescriptor< ListTopicSubscriptionsRequest, ListTopicSubscriptionsResponse, String>() { @Override public Object emptyToken() { return ""; } @Override public ListTopicSubscriptionsRequest injectToken( ListTopicSubscriptionsRequest payload, Object token) { return ListTopicSubscriptionsRequest.newBuilder(payload) .setPageToken((String) token) .build(); } @Override public Object extractNextToken(ListTopicSubscriptionsResponse payload) { return payload.getNextPageToken(); } @Override public Iterable extractResources(ListTopicSubscriptionsResponse payload) { return payload.getSubscriptionsList(); } }; private static BundlingDescriptor PUBLISH_BUNDLING_DESC = new BundlingDescriptor() { @Override public String getBundlePartitionKey(PublishRequest request) { return request.getTopic() + "|"; } @Override public PublishRequest mergeRequests(Collection requests) { PublishRequest firstRequest = requests.iterator().next(); List elements = new ArrayList<>(); for (PublishRequest request : requests) { elements.addAll(request.getMessagesList()); } PublishRequest bundleRequest = PublishRequest.newBuilder() .setTopic(firstRequest.getTopic()) .addAllMessages(elements) .build(); return bundleRequest; } @Override public void splitResponse( PublishResponse bundleResponse, Collection> bundle) { int bundleMessageIndex = 0; for (RequestIssuer responder : bundle) { List subresponseElements = new ArrayList<>(); int subresponseCount = responder.getRequest().getMessagesCount(); for (int i = 0; i < subresponseCount; i++) { subresponseElements.add(bundleResponse.getMessageIds(bundleMessageIndex)); bundleMessageIndex += 1; } PublishResponse response = PublishResponse.newBuilder().addAllMessageIds(subresponseElements).build(); responder.setResponse(response); } } @Override public void splitException( Throwable throwable, Collection> bundle) { for (RequestIssuer responder : bundle) { responder.setException(throwable); } } @Override public long countElements(PublishRequest request) { return request.getMessagesCount(); } @Override public long countBytes(PublishRequest request) { return request.getSerializedSize(); } }; /** * Builder for PublisherSettings. */ public static class Builder extends ServiceApiSettings.Builder { private final ImmutableList methodSettingsBuilders; private SimpleCallSettings.Builder createTopicSettings; private BundlingCallSettings.Builder publishSettings; private SimpleCallSettings.Builder getTopicSettings; private PageStreamingCallSettings.Builder listTopicsSettings; private PageStreamingCallSettings.Builder< ListTopicSubscriptionsRequest, ListTopicSubscriptionsResponse, String> listTopicSubscriptionsSettings; private SimpleCallSettings.Builder deleteTopicSettings; private static final ImmutableMap> RETRYABLE_CODE_DEFINITIONS; static { ImmutableMap.Builder> definitions = ImmutableMap.builder(); definitions.put( "idempotent", Sets.immutableEnumSet( Lists.newArrayList( Status.Code.DEADLINE_EXCEEDED, Status.Code.UNAVAILABLE))); definitions.put( "one_plus_delivery", Sets.immutableEnumSet( Lists.newArrayList( Status.Code.DEADLINE_EXCEEDED, Status.Code.UNAVAILABLE))); definitions.put("non_idempotent", Sets.immutableEnumSet(Lists.newArrayList())); RETRYABLE_CODE_DEFINITIONS = definitions.build(); } private static final ImmutableMap RETRY_PARAM_DEFINITIONS; static { ImmutableMap.Builder definitions = ImmutableMap.builder(); RetrySettings.Builder settingsBuilder = null; settingsBuilder = RetrySettings.newBuilder() .setInitialRetryDelay(Duration.millis(100L)) .setRetryDelayMultiplier(1.3) .setMaxRetryDelay(Duration.millis(60000L)) .setInitialRpcTimeout(Duration.millis(60000L)) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeout(Duration.millis(60000L)) .setTotalTimeout(Duration.millis(600000L)); definitions.put("default", settingsBuilder); settingsBuilder = RetrySettings.newBuilder() .setInitialRetryDelay(Duration.millis(100L)) .setRetryDelayMultiplier(1.3) .setMaxRetryDelay(Duration.millis(60000L)) .setInitialRpcTimeout(Duration.millis(12000L)) .setRpcTimeoutMultiplier(1.0) .setMaxRpcTimeout(Duration.millis(12000L)) .setTotalTimeout(Duration.millis(600000L)); definitions.put("messaging", settingsBuilder); RETRY_PARAM_DEFINITIONS = definitions.build(); } private Builder() { super(DEFAULT_CONNECTION_SETTINGS); createTopicSettings = SimpleCallSettings.newBuilder(PublisherGrpc.METHOD_CREATE_TOPIC); publishSettings = BundlingCallSettings.newBuilder(PublisherGrpc.METHOD_PUBLISH, PUBLISH_BUNDLING_DESC) .setBundlingSettingsBuilder(BundlingSettings.newBuilder()); getTopicSettings = SimpleCallSettings.newBuilder(PublisherGrpc.METHOD_GET_TOPIC); listTopicsSettings = PageStreamingCallSettings.newBuilder( PublisherGrpc.METHOD_LIST_TOPICS, LIST_TOPICS_PAGE_STR_DESC); listTopicSubscriptionsSettings = PageStreamingCallSettings.newBuilder( PublisherGrpc.METHOD_LIST_TOPIC_SUBSCRIPTIONS, LIST_TOPIC_SUBSCRIPTIONS_PAGE_STR_DESC); deleteTopicSettings = SimpleCallSettings.newBuilder(PublisherGrpc.METHOD_DELETE_TOPIC); methodSettingsBuilders = ImmutableList.of( createTopicSettings, publishSettings, getTopicSettings, listTopicsSettings, listTopicSubscriptionsSettings, deleteTopicSettings); } private static Builder createDefault() { Builder builder = new Builder(); builder .createTopicSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) .setRetrySettingsBuilder(RETRY_PARAM_DEFINITIONS.get("default")); builder .publishSettings() .getBundlingSettingsBuilder() .setElementCountThreshold(10) .setElementCountLimit(1000) .setRequestByteThreshold(1024) .setRequestByteLimit(10485760) .setDelayThreshold(Duration.millis(10)) .setBlockingCallCountThreshold(1); builder .publishSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("one_plus_delivery")) .setRetrySettingsBuilder(RETRY_PARAM_DEFINITIONS.get("messaging")); builder .getTopicSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) .setRetrySettingsBuilder(RETRY_PARAM_DEFINITIONS.get("default")); builder .listTopicsSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) .setRetrySettingsBuilder(RETRY_PARAM_DEFINITIONS.get("default")); builder .listTopicSubscriptionsSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) .setRetrySettingsBuilder(RETRY_PARAM_DEFINITIONS.get("default")); builder .deleteTopicSettings() .setRetryableCodes(RETRYABLE_CODE_DEFINITIONS.get("idempotent")) .setRetrySettingsBuilder(RETRY_PARAM_DEFINITIONS.get("default")); return builder; } private Builder(PublisherSettings settings) { super(settings); createTopicSettings = settings.createTopicSettings.toBuilder(); publishSettings = settings.publishSettings.toBuilder(); getTopicSettings = settings.getTopicSettings.toBuilder(); listTopicsSettings = settings.listTopicsSettings.toBuilder(); listTopicSubscriptionsSettings = settings.listTopicSubscriptionsSettings.toBuilder(); deleteTopicSettings = settings.deleteTopicSettings.toBuilder(); methodSettingsBuilders = ImmutableList.of( createTopicSettings, publishSettings, getTopicSettings, listTopicsSettings, listTopicSubscriptionsSettings, deleteTopicSettings); } @Override protected ConnectionSettings getDefaultConnectionSettings() { return DEFAULT_CONNECTION_SETTINGS; } @Override public Builder provideExecutorWith(ScheduledExecutorService executor, boolean shouldAutoClose) { super.provideExecutorWith(executor, shouldAutoClose); return this; } @Override public Builder provideChannelWith(ManagedChannel channel, boolean shouldAutoClose) { super.provideChannelWith(channel, shouldAutoClose); return this; } @Override public Builder provideChannelWith(ConnectionSettings settings) { super.provideChannelWith(settings); return this; } @Override public Builder provideChannelWith(Credentials credentials) { super.provideChannelWith(credentials); return this; } @Override public Builder provideChannelWith(List scopes) { super.provideChannelWith(scopes); return this; } @Override public Builder setGeneratorHeader(String name, String version) { super.setGeneratorHeader(name, version); return this; } @Override public Builder setClientLibHeader(String name, String version) { super.setClientLibHeader(name, version); return this; } /** * Applies the given settings to all of the API methods in this service. Only * values that are non-null will be applied, so this method is not capable * of un-setting any values. */ public Builder applyToAllApiMethods(ApiCallSettings.Builder apiCallSettings) throws Exception { super.applyToAllApiMethods(methodSettingsBuilders, apiCallSettings); return this; } /** * Returns the builder for the settings used for calls to createTopic. */ public SimpleCallSettings.Builder createTopicSettings() { return createTopicSettings; } /** * Returns the builder for the settings used for calls to publish. */ public BundlingCallSettings.Builder publishSettings() { return publishSettings; } /** * Returns the builder for the settings used for calls to getTopic. */ public SimpleCallSettings.Builder getTopicSettings() { return getTopicSettings; } /** * Returns the builder for the settings used for calls to listTopics. */ public PageStreamingCallSettings.Builder listTopicsSettings() { return listTopicsSettings; } /** * Returns the builder for the settings used for calls to listTopicSubscriptions. */ public PageStreamingCallSettings.Builder< ListTopicSubscriptionsRequest, ListTopicSubscriptionsResponse, String> listTopicSubscriptionsSettings() { return listTopicSubscriptionsSettings; } /** * Returns the builder for the settings used for calls to deleteTopic. */ public SimpleCallSettings.Builder deleteTopicSettings() { return deleteTopicSettings; } @Override public PublisherSettings build() throws IOException { return new PublisherSettings(this); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy