Class SubscriptionAdminClient (1.119.1)

public class SubscriptionAdminClient implements BackgroundResource

Service Description: The service that an application uses to manipulate subscriptions and to consume messages from a subscription via the Pull method or by establishing a bi-directional stream using the StreamingPull method.

This class provides the ability to make remote calls to the backing service through method calls that map to API methods. Sample code to get started:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName name = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   TopicName topic = TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]");
   PushConfig pushConfig = PushConfig.newBuilder().build();
   int ackDeadlineSeconds = 2135351438;
   Subscription response =
       subscriptionAdminClient.createSubscription(name, topic, pushConfig, ackDeadlineSeconds);
 }
 

Note: close() needs to be called on the SubscriptionAdminClient object to clean up resources such as threads. In the example above, try-with-resources is used, which automatically calls close().

The surface of this class includes several types of Java methods for each of the API's methods:

  1. A "flattened" method. With this type of method, the fields of the request type have been converted into function parameters. It may be the case that not all fields are available as parameters, and not every API method will have a flattened method entry point.
  2. A "request object" method. This type of method only takes one parameter, a request object, which must be constructed before the call. Not every API method will have a request object method.
  3. A "callable" method. This type of method takes no parameters and returns an immutable API callable object, which can be used to initiate calls to the service.

See the individual methods for example code.

Many parameters require resource names to be formatted in a particular way. To assist with these names, this class includes a format method for each type of name, and additionally a parse method to extract the individual identifiers contained within names that are returned.

This class can be customized by passing in a custom instance of SubscriptionAdminSettings to create(). For example:

To customize credentials:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 SubscriptionAdminSettings subscriptionAdminSettings =
     SubscriptionAdminSettings.newBuilder()
         .setCredentialsProvider(FixedCredentialsProvider.create(myCredentials))
         .build();
 SubscriptionAdminClient subscriptionAdminClient =
     SubscriptionAdminClient.create(subscriptionAdminSettings);
 

To customize the endpoint:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 SubscriptionAdminSettings subscriptionAdminSettings =
     SubscriptionAdminSettings.newBuilder().setEndpoint(myEndpoint).build();
 SubscriptionAdminClient subscriptionAdminClient =
     SubscriptionAdminClient.create(subscriptionAdminSettings);
 

Please refer to the GitHub repository's samples for more quickstart code snippets.

Inheritance

java.lang.Object > SubscriptionAdminClient

Implements

BackgroundResource

Static Methods

create()

public static final SubscriptionAdminClient create()

Constructs an instance of SubscriptionAdminClient with default settings.

Returns
TypeDescription
SubscriptionAdminClient
Exceptions
TypeDescription
IOException

create(SubscriptionAdminSettings settings)

public static final SubscriptionAdminClient create(SubscriptionAdminSettings settings)

Constructs an instance of SubscriptionAdminClient, using the given settings. The channels are created based on the settings passed in, or defaults for any settings that are not set.

Parameter
NameDescription
settingsSubscriptionAdminSettings
Returns
TypeDescription
SubscriptionAdminClient
Exceptions
TypeDescription
IOException

create(SubscriberStub stub)

public static final SubscriptionAdminClient create(SubscriberStub stub)

Constructs an instance of SubscriptionAdminClient, using the given stub for making calls. This is for advanced usage - prefer using create(SubscriptionAdminSettings).

Parameter
NameDescription
stubSubscriberStub
Returns
TypeDescription
SubscriptionAdminClient

Constructors

SubscriptionAdminClient(SubscriptionAdminSettings settings)

protected SubscriptionAdminClient(SubscriptionAdminSettings settings)

Constructs an instance of SubscriptionAdminClient, using the given settings. This is protected so that it is easy to make a subclass, but otherwise, the static factory methods should be preferred.

Parameter
NameDescription
settingsSubscriptionAdminSettings

SubscriptionAdminClient(SubscriberStub stub)

protected SubscriptionAdminClient(SubscriberStub stub)
Parameter
NameDescription
stubSubscriberStub

Methods

acknowledge(AcknowledgeRequest request)

public final void acknowledge(AcknowledgeRequest request)

Acknowledges the messages associated with the ack_ids in the AcknowledgeRequest. The Pub/Sub system can remove the relevant messages from the subscription.

Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   AcknowledgeRequest request =
       AcknowledgeRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .addAllAckIds(new ArrayList<String>())
           .build();
   subscriptionAdminClient.acknowledge(request);
 }
 
Parameter
NameDescription
requestAcknowledgeRequest

The request object containing all of the parameters for the API call.

acknowledge(ProjectSubscriptionName subscription, List<String> ackIds) (deprecated)

public final void acknowledge(ProjectSubscriptionName subscription, List<String> ackIds)

Deprecated. Use <xref uid="#acknowledge(SubscriptionName, List<String>)" data-throw-if-not-resolved="false">#acknowledge(SubscriptionName, List<String>) instead.

Acknowledges the messages associated with the ack_ids in the AcknowledgeRequest. The Pub/Sub system can remove the relevant messages from the subscription.

Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSubscriptionName subscription = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   List<String> ackIds = new ArrayList<>();
   subscriptionAdminClient.acknowledge(subscription, ackIds);
 }
 
Parameters
NameDescription
subscriptionProjectSubscriptionName

Required. The subscription whose message is being acknowledged. Format is projects/{project}/subscriptions/{sub}.

ackIdsList<String>

Required. The acknowledgment ID for the messages being acknowledged that was returned by the Pub/Sub system in the Pull response. Must not be empty.

acknowledge(SubscriptionName subscription, List<String> ackIds)

public final void acknowledge(SubscriptionName subscription, List<String> ackIds)

Acknowledges the messages associated with the ack_ids in the AcknowledgeRequest. The Pub/Sub system can remove the relevant messages from the subscription.

Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   List<String> ackIds = new ArrayList<>();
   subscriptionAdminClient.acknowledge(subscription, ackIds);
 }
 
Parameters
NameDescription
subscriptionSubscriptionName

Required. The subscription whose message is being acknowledged. Format is projects/{project}/subscriptions/{sub}.

ackIdsList<String>

Required. The acknowledgment ID for the messages being acknowledged that was returned by the Pub/Sub system in the Pull response. Must not be empty.

acknowledge(String subscription, List<String> ackIds)

public final void acknowledge(String subscription, List<String> ackIds)

Acknowledges the messages associated with the ack_ids in the AcknowledgeRequest. The Pub/Sub system can remove the relevant messages from the subscription.

Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   List<String> ackIds = new ArrayList<>();
   subscriptionAdminClient.acknowledge(subscription, ackIds);
 }
 
Parameters
NameDescription
subscriptionString

Required. The subscription whose message is being acknowledged. Format is projects/{project}/subscriptions/{sub}.

ackIdsList<String>

Required. The acknowledgment ID for the messages being acknowledged that was returned by the Pub/Sub system in the Pull response. Must not be empty.

acknowledgeCallable()

public final UnaryCallable<AcknowledgeRequest,Empty> acknowledgeCallable()

Acknowledges the messages associated with the ack_ids in the AcknowledgeRequest. The Pub/Sub system can remove the relevant messages from the subscription.

Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   AcknowledgeRequest request =
       AcknowledgeRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .addAllAckIds(new ArrayList<String>())
           .build();
   ApiFuture<Empty> future = subscriptionAdminClient.acknowledgeCallable().futureCall(request);
   // Do something.
   future.get();
 }
 
Returns
TypeDescription
UnaryCallable<AcknowledgeRequest,Empty>

awaitTermination(long duration, TimeUnit unit)

public boolean awaitTermination(long duration, TimeUnit unit)
Parameters
NameDescription
durationlong
unitTimeUnit
Returns
TypeDescription
boolean
Exceptions
TypeDescription
InterruptedException

close()

public final void close()

createSnapshot(CreateSnapshotRequest request)

public final Snapshot createSnapshot(CreateSnapshotRequest request)

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   CreateSnapshotRequest request =
       CreateSnapshotRequest.newBuilder()
           .setName(SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString())
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .putAllLabels(new HashMap<String, String>())
           .build();
   Snapshot response = subscriptionAdminClient.createSnapshot(request);
 }
 
Parameter
NameDescription
requestCreateSnapshotRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
Snapshot

createSnapshot(ProjectSnapshotName name, ProjectSubscriptionName subscription) (deprecated)

public final Snapshot createSnapshot(ProjectSnapshotName name, ProjectSubscriptionName subscription)

Deprecated. Use Use #createSnapshot(SnapshotName, SubscriptionName) instead.

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSnapshotName name = ProjectSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
   ProjectSubscriptionName subscription = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   Snapshot response = subscriptionAdminClient.createSnapshot(name, subscription);
 }
 
Parameters
NameDescription
nameProjectSnapshotName

Required. User-provided name for this snapshot. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription. Note that for REST API requests, you must specify a name. See the <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">; resource name rules</a>. Format is projects/{project}/snapshots/{snap}.

subscriptionProjectSubscriptionName

Required. The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the CreateSnapshot request; as well as: (b) Any messages published to the subscription's topic following the successful completion of the CreateSnapshot request. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Snapshot

createSnapshot(ProjectSnapshotName name, String subscription) (deprecated)

public final Snapshot createSnapshot(ProjectSnapshotName name, String subscription)

Deprecated. Use Use #createSnapshot(SnapshotName, String) instead.

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSnapshotName name = ProjectSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
   String subscription = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   Snapshot response = subscriptionAdminClient.createSnapshot(name, subscription);
 }
 
Parameters
NameDescription
nameProjectSnapshotName

Required. User-provided name for this snapshot. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription. Note that for REST API requests, you must specify a name. See the <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">; resource name rules</a>. Format is projects/{project}/snapshots/{snap}.

subscriptionString

Required. The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the CreateSnapshot request; as well as: (b) Any messages published to the subscription's topic following the successful completion of the CreateSnapshot request. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Snapshot

createSnapshot(SnapshotName name, SubscriptionName subscription)

public final Snapshot createSnapshot(SnapshotName name, SubscriptionName subscription)

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SnapshotName name = SnapshotName.of("[PROJECT]", "[SNAPSHOT]");
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   Snapshot response = subscriptionAdminClient.createSnapshot(name, subscription);
 }
 
Parameters
NameDescription
nameSnapshotName

Required. User-provided name for this snapshot. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription. Note that for REST API requests, you must specify a name. See the <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">; resource name rules</a>. Format is projects/{project}/snapshots/{snap}.

subscriptionSubscriptionName

Required. The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the CreateSnapshot request; as well as: (b) Any messages published to the subscription's topic following the successful completion of the CreateSnapshot request. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Snapshot

createSnapshot(SnapshotName name, String subscription)

public final Snapshot createSnapshot(SnapshotName name, String subscription)

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SnapshotName name = SnapshotName.of("[PROJECT]", "[SNAPSHOT]");
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   Snapshot response = subscriptionAdminClient.createSnapshot(name, subscription);
 }
 
Parameters
NameDescription
nameSnapshotName

Required. User-provided name for this snapshot. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription. Note that for REST API requests, you must specify a name. See the <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">; resource name rules</a>. Format is projects/{project}/snapshots/{snap}.

subscriptionString

Required. The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the CreateSnapshot request; as well as: (b) Any messages published to the subscription's topic following the successful completion of the CreateSnapshot request. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Snapshot

createSnapshot(String name, ProjectSubscriptionName subscription) (deprecated)

public final Snapshot createSnapshot(String name, ProjectSubscriptionName subscription)

Deprecated. Use Use #createSnapshot(String, SubscriptionName) instead.

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String name = ProjectSnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString();
   ProjectSubscriptionName subscription = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   Snapshot response = subscriptionAdminClient.createSnapshot(name, subscription);
 }
 
Parameters
NameDescription
nameString

Required. User-provided name for this snapshot. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription. Note that for REST API requests, you must specify a name. See the <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">; resource name rules</a>. Format is projects/{project}/snapshots/{snap}.

subscriptionProjectSubscriptionName

Required. The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the CreateSnapshot request; as well as: (b) Any messages published to the subscription's topic following the successful completion of the CreateSnapshot request. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Snapshot

createSnapshot(String name, SubscriptionName subscription)

public final Snapshot createSnapshot(String name, SubscriptionName subscription)

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String name = SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString();
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   Snapshot response = subscriptionAdminClient.createSnapshot(name, subscription);
 }
 
Parameters
NameDescription
nameString

Required. User-provided name for this snapshot. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription. Note that for REST API requests, you must specify a name. See the <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">; resource name rules</a>. Format is projects/{project}/snapshots/{snap}.

subscriptionSubscriptionName

Required. The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the CreateSnapshot request; as well as: (b) Any messages published to the subscription's topic following the successful completion of the CreateSnapshot request. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Snapshot

createSnapshot(String name, String subscription)

public final Snapshot createSnapshot(String name, String subscription)

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String name = SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString();
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   Snapshot response = subscriptionAdminClient.createSnapshot(name, subscription);
 }
 
Parameters
NameDescription
nameString

Required. User-provided name for this snapshot. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription. Note that for REST API requests, you must specify a name. See the <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">; resource name rules</a>. Format is projects/{project}/snapshots/{snap}.

subscriptionString

Required. The subscription whose backlog the snapshot retains. Specifically, the created snapshot is guaranteed to retain: (a) The existing backlog on the subscription. More precisely, this is defined as the messages in the subscription's backlog that are unacknowledged upon the successful completion of the CreateSnapshot request; as well as: (b) Any messages published to the subscription's topic following the successful completion of the CreateSnapshot request. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Snapshot

createSnapshotCallable()

public final UnaryCallable<CreateSnapshotRequest,Snapshot> createSnapshotCallable()

Creates a snapshot from the requested subscription. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. If the snapshot already exists, returns ALREADY_EXISTS. If the requested subscription doesn't exist, returns NOT_FOUND. If the backlog in the subscription is too old -- and the resulting snapshot would expire in less than 1 hour -- then FAILED_PRECONDITION is returned. See also the Snapshot.expire_time field. If the name is not provided in the request, the server will assign a random name for this snapshot on the same project as the subscription, conforming to the resource name format. The generated name is populated in the returned Snapshot object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   CreateSnapshotRequest request =
       CreateSnapshotRequest.newBuilder()
           .setName(SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString())
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .putAllLabels(new HashMap<String, String>())
           .build();
   ApiFuture<Snapshot> future =
       subscriptionAdminClient.createSnapshotCallable().futureCall(request);
   // Do something.
   Snapshot response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<CreateSnapshotRequest,Snapshot>

createSubscription(ProjectSubscriptionName name, ProjectTopicName topic, PushConfig pushConfig, int ackDeadlineSeconds) (deprecated)

public final Subscription createSubscription(ProjectSubscriptionName name, ProjectTopicName topic, PushConfig pushConfig, int ackDeadlineSeconds)

Deprecated. Use #createSubscription(SubscriptionName, TopicName, PushConfig, int) instead.

Creates a subscription to a given topic. See the <a href="https://cloud.google.com/pubsub/docs/admin#resource_names">; resource name rules</a>. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSubscriptionName name = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   ProjectTopicName topic = ProjectTopicName.of("[PROJECT]", "[TOPIC]");
   PushConfig pushConfig = PushConfig.newBuilder().build();
   int ackDeadlineSeconds = 0;
   Subscription response = subscriptionAdminClient.createSubscription(name, topic, pushConfig, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
nameProjectSubscriptionName

Required. The name of the subscription. It must have the format "projects/{project}/subscriptions/{subscription}". {subscription} must start with a letter, and contain only letters ([A-Za-z]), numbers ([0-9]), dashes (-), underscores (_), periods (.), tildes (~), plus (+) or percent signs (%). It must be between 3 and 255 characters in length, and it must not start with "goog".

topicProjectTopicName

Required. The name of the topic from which this subscription is receiving messages. Format is projects/{project}/topics/{topic}. The value of this field will be deleted-topic if the topic has been deleted.

pushConfigPushConfig

If push delivery is used with this subscription, this field is used to configure it. An empty pushConfig signifies that the subscriber will pull and ack messages using API methods.

ackDeadlineSecondsint

The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be <i>outstanding</i>. During that time period, the message will not be redelivered (on a best-effort basis).

For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call ModifyAckDeadline with the corresponding ack_id if using non-streaming pull or send the ack_id in a StreamingModifyAckDeadlineRequest if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used.

For push delivery, this value is also used to set the request timeout for the call to the push endpoint.

If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.

Returns
TypeDescription
Subscription

createSubscription(ProjectSubscriptionName name, TopicName topic, PushConfig pushConfig, int ackDeadlineSeconds) (deprecated)

public final Subscription createSubscription(ProjectSubscriptionName name, TopicName topic, PushConfig pushConfig, int ackDeadlineSeconds)

Deprecated. Use #createSubscription(SubscriptionName, TopicName, PushConfig, int) instead.

Creates a subscription to a given topic. See the resource name rules. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSubscriptionName name = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   TopicName topic = TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]");
   PushConfig pushConfig = PushConfig.newBuilder().build();
   int ackDeadlineSeconds = 2135351438;
   Subscription response =
       subscriptionAdminClient.createSubscription(name, topic, pushConfig, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
nameProjectSubscriptionName

Required. The name of the subscription. It must have the format "projects/{project}/subscriptions/{subscription}". {subscription} must start with a letter, and contain only letters ([A-Za-z]), numbers ([0-9]), dashes (-), underscores (_), periods (.), tildes (~), plus (+) or percent signs (%). It must be between 3 and 255 characters in length, and it must not start with "goog".

topicTopicName

Required. The name of the topic from which this subscription is receiving messages. Format is projects/{project}/topics/{topic}. The value of this field will be deleted-topic if the topic has been deleted.

pushConfigPushConfig

If push delivery is used with this subscription, this field is used to configure it. An empty pushConfig signifies that the subscriber will pull and ack messages using API methods.

ackDeadlineSecondsint

The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be <i>outstanding</i>. During that time period, the message will not be redelivered (on a best-effort basis).

For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call ModifyAckDeadline with the corresponding ack_id if using non-streaming pull or send the ack_id in a StreamingModifyAckDeadlineRequest if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used.

For push delivery, this value is also used to set the request timeout for the call to the push endpoint.

If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.

Returns
TypeDescription
Subscription

createSubscription(ProjectSubscriptionName name, String topic, PushConfig pushConfig, int ackDeadlineSeconds) (deprecated)

public final Subscription createSubscription(ProjectSubscriptionName name, String topic, PushConfig pushConfig, int ackDeadlineSeconds)

Deprecated. Use #createSubscription(SubscriptionName, String, PushConfig, int) instead.

Creates a subscription to a given topic. See the resource name rules. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSubscriptionName name = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   String topic = TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString();
   PushConfig pushConfig = PushConfig.newBuilder().build();
   int ackDeadlineSeconds = 2135351438;
   Subscription response =
       subscriptionAdminClient.createSubscription(name, topic, pushConfig, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
nameProjectSubscriptionName

Required. The name of the subscription. It must have the format "projects/{project}/subscriptions/{subscription}". {subscription} must start with a letter, and contain only letters ([A-Za-z]), numbers ([0-9]), dashes (-), underscores (_), periods (.), tildes (~), plus (+) or percent signs (%). It must be between 3 and 255 characters in length, and it must not start with "goog".

topicString

Required. The name of the topic from which this subscription is receiving messages. Format is projects/{project}/topics/{topic}. The value of this field will be deleted-topic if the topic has been deleted.

pushConfigPushConfig

If push delivery is used with this subscription, this field is used to configure it. An empty pushConfig signifies that the subscriber will pull and ack messages using API methods.

ackDeadlineSecondsint

The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be <i>outstanding</i>. During that time period, the message will not be redelivered (on a best-effort basis).

For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call ModifyAckDeadline with the corresponding ack_id if using non-streaming pull or send the ack_id in a StreamingModifyAckDeadlineRequest if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used.

For push delivery, this value is also used to set the request timeout for the call to the push endpoint.

If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.

Returns
TypeDescription
Subscription

createSubscription(Subscription request)

public final Subscription createSubscription(Subscription request)

Creates a subscription to a given topic. See the resource name rules. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   Subscription request =
       Subscription.newBuilder()
           .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString())
           .setPushConfig(PushConfig.newBuilder().build())
           .setBigqueryConfig(BigQueryConfig.newBuilder().build())
           .setAckDeadlineSeconds(2135351438)
           .setRetainAckedMessages(true)
           .setMessageRetentionDuration(Duration.newBuilder().build())
           .putAllLabels(new HashMap<String, String>())
           .setEnableMessageOrdering(true)
           .setExpirationPolicy(ExpirationPolicy.newBuilder().build())
           .setFilter("filter-1274492040")
           .setDeadLetterPolicy(DeadLetterPolicy.newBuilder().build())
           .setRetryPolicy(RetryPolicy.newBuilder().build())
           .setDetached(true)
           .setEnableExactlyOnceDelivery(true)
           .setTopicMessageRetentionDuration(Duration.newBuilder().build())
           .build();
   Subscription response = subscriptionAdminClient.createSubscription(request);
 }
 
Parameter
NameDescription
requestSubscription

The request object containing all of the parameters for the API call.

Returns
TypeDescription
Subscription

createSubscription(SubscriptionName name, TopicName topic, PushConfig pushConfig, int ackDeadlineSeconds)

public final Subscription createSubscription(SubscriptionName name, TopicName topic, PushConfig pushConfig, int ackDeadlineSeconds)

Creates a subscription to a given topic. See the resource name rules. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName name = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   TopicName topic = TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]");
   PushConfig pushConfig = PushConfig.newBuilder().build();
   int ackDeadlineSeconds = 2135351438;
   Subscription response =
       subscriptionAdminClient.createSubscription(name, topic, pushConfig, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
nameSubscriptionName

Required. The name of the subscription. It must have the format "projects/{project}/subscriptions/{subscription}". {subscription} must start with a letter, and contain only letters ([A-Za-z]), numbers ([0-9]), dashes (-), underscores (_), periods (.), tildes (~), plus (+) or percent signs (%). It must be between 3 and 255 characters in length, and it must not start with "goog".

topicTopicName

Required. The name of the topic from which this subscription is receiving messages. Format is projects/{project}/topics/{topic}. The value of this field will be deleted-topic if the topic has been deleted.

pushConfigPushConfig

If push delivery is used with this subscription, this field is used to configure it. Either pushConfig or bigQueryConfig can be set, but not both. If both are empty, then the subscriber will pull and ack messages using API methods.

ackDeadlineSecondsint

The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be <i>outstanding</i>. During that time period, the message will not be redelivered (on a best-effort basis).

For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call ModifyAckDeadline with the corresponding ack_id if using non-streaming pull or send the ack_id in a StreamingModifyAckDeadlineRequest if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used.

For push delivery, this value is also used to set the request timeout for the call to the push endpoint.

If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.

Returns
TypeDescription
Subscription

createSubscription(SubscriptionName name, String topic, PushConfig pushConfig, int ackDeadlineSeconds)

public final Subscription createSubscription(SubscriptionName name, String topic, PushConfig pushConfig, int ackDeadlineSeconds)

Creates a subscription to a given topic. See the resource name rules. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName name = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   String topic = TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString();
   PushConfig pushConfig = PushConfig.newBuilder().build();
   int ackDeadlineSeconds = 2135351438;
   Subscription response =
       subscriptionAdminClient.createSubscription(name, topic, pushConfig, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
nameSubscriptionName

Required. The name of the subscription. It must have the format "projects/{project}/subscriptions/{subscription}". {subscription} must start with a letter, and contain only letters ([A-Za-z]), numbers ([0-9]), dashes (-), underscores (_), periods (.), tildes (~), plus (+) or percent signs (%). It must be between 3 and 255 characters in length, and it must not start with "goog".

topicString

Required. The name of the topic from which this subscription is receiving messages. Format is projects/{project}/topics/{topic}. The value of this field will be deleted-topic if the topic has been deleted.

pushConfigPushConfig

If push delivery is used with this subscription, this field is used to configure it. Either pushConfig or bigQueryConfig can be set, but not both. If both are empty, then the subscriber will pull and ack messages using API methods.

ackDeadlineSecondsint

The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be <i>outstanding</i>. During that time period, the message will not be redelivered (on a best-effort basis).

For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call ModifyAckDeadline with the corresponding ack_id if using non-streaming pull or send the ack_id in a StreamingModifyAckDeadlineRequest if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used.

For push delivery, this value is also used to set the request timeout for the call to the push endpoint.

If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.

Returns
TypeDescription
Subscription

createSubscription(String name, TopicName topic, PushConfig pushConfig, int ackDeadlineSeconds)

public final Subscription createSubscription(String name, TopicName topic, PushConfig pushConfig, int ackDeadlineSeconds)

Creates a subscription to a given topic. See the resource name rules. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String name = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   TopicName topic = TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]");
   PushConfig pushConfig = PushConfig.newBuilder().build();
   int ackDeadlineSeconds = 2135351438;
   Subscription response =
       subscriptionAdminClient.createSubscription(name, topic, pushConfig, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
nameString

Required. The name of the subscription. It must have the format "projects/{project}/subscriptions/{subscription}". {subscription} must start with a letter, and contain only letters ([A-Za-z]), numbers ([0-9]), dashes (-), underscores (_), periods (.), tildes (~), plus (+) or percent signs (%). It must be between 3 and 255 characters in length, and it must not start with "goog".

topicTopicName

Required. The name of the topic from which this subscription is receiving messages. Format is projects/{project}/topics/{topic}. The value of this field will be deleted-topic if the topic has been deleted.

pushConfigPushConfig

If push delivery is used with this subscription, this field is used to configure it. Either pushConfig or bigQueryConfig can be set, but not both. If both are empty, then the subscriber will pull and ack messages using API methods.

ackDeadlineSecondsint

The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be <i>outstanding</i>. During that time period, the message will not be redelivered (on a best-effort basis).

For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call ModifyAckDeadline with the corresponding ack_id if using non-streaming pull or send the ack_id in a StreamingModifyAckDeadlineRequest if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used.

For push delivery, this value is also used to set the request timeout for the call to the push endpoint.

If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.

Returns
TypeDescription
Subscription

createSubscription(String name, String topic, PushConfig pushConfig, int ackDeadlineSeconds)

public final Subscription createSubscription(String name, String topic, PushConfig pushConfig, int ackDeadlineSeconds)

Creates a subscription to a given topic. See the resource name rules. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String name = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   String topic = TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString();
   PushConfig pushConfig = PushConfig.newBuilder().build();
   int ackDeadlineSeconds = 2135351438;
   Subscription response =
       subscriptionAdminClient.createSubscription(name, topic, pushConfig, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
nameString

Required. The name of the subscription. It must have the format "projects/{project}/subscriptions/{subscription}". {subscription} must start with a letter, and contain only letters ([A-Za-z]), numbers ([0-9]), dashes (-), underscores (_), periods (.), tildes (~), plus (+) or percent signs (%). It must be between 3 and 255 characters in length, and it must not start with "goog".

topicString

Required. The name of the topic from which this subscription is receiving messages. Format is projects/{project}/topics/{topic}. The value of this field will be deleted-topic if the topic has been deleted.

pushConfigPushConfig

If push delivery is used with this subscription, this field is used to configure it. Either pushConfig or bigQueryConfig can be set, but not both. If both are empty, then the subscriber will pull and ack messages using API methods.

ackDeadlineSecondsint

The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be <i>outstanding</i>. During that time period, the message will not be redelivered (on a best-effort basis).

For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call ModifyAckDeadline with the corresponding ack_id if using non-streaming pull or send the ack_id in a StreamingModifyAckDeadlineRequest if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used.

For push delivery, this value is also used to set the request timeout for the call to the push endpoint.

If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.

Returns
TypeDescription
Subscription

createSubscriptionCallable()

public final UnaryCallable<Subscription,Subscription> createSubscriptionCallable()

Creates a subscription to a given topic. See the resource name rules. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND.

If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic, conforming to the resource name format. The generated name is populated in the returned Subscription object. Note that for REST API requests, you must specify a name in the request.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   Subscription request =
       Subscription.newBuilder()
           .setName(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .setTopic(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString())
           .setPushConfig(PushConfig.newBuilder().build())
           .setBigqueryConfig(BigQueryConfig.newBuilder().build())
           .setAckDeadlineSeconds(2135351438)
           .setRetainAckedMessages(true)
           .setMessageRetentionDuration(Duration.newBuilder().build())
           .putAllLabels(new HashMap<String, String>())
           .setEnableMessageOrdering(true)
           .setExpirationPolicy(ExpirationPolicy.newBuilder().build())
           .setFilter("filter-1274492040")
           .setDeadLetterPolicy(DeadLetterPolicy.newBuilder().build())
           .setRetryPolicy(RetryPolicy.newBuilder().build())
           .setDetached(true)
           .setEnableExactlyOnceDelivery(true)
           .setTopicMessageRetentionDuration(Duration.newBuilder().build())
           .build();
   ApiFuture<Subscription> future =
       subscriptionAdminClient.createSubscriptionCallable().futureCall(request);
   // Do something.
   Subscription response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<Subscription,Subscription>

deleteSnapshot(DeleteSnapshotRequest request)

public final void deleteSnapshot(DeleteSnapshotRequest request)

Removes an existing snapshot. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. When the snapshot is deleted, all messages retained in the snapshot are immediately dropped. After a snapshot is deleted, a new one may be created with the same name, but the new one has no association with the old snapshot or its subscription, unless the same subscription is specified.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   DeleteSnapshotRequest request =
       DeleteSnapshotRequest.newBuilder()
           .setSnapshot(SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString())
           .build();
   subscriptionAdminClient.deleteSnapshot(request);
 }
 
Parameter
NameDescription
requestDeleteSnapshotRequest

The request object containing all of the parameters for the API call.

deleteSnapshot(ProjectSnapshotName snapshot) (deprecated)

public final void deleteSnapshot(ProjectSnapshotName snapshot)

Deprecated. Use Use #deleteSnapshot(SnapshotName) instead.

Removes an existing snapshot. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. When the snapshot is deleted, all messages retained in the snapshot are immediately dropped. After a snapshot is deleted, a new one may be created with the same name, but the new one has no association with the old snapshot or its subscription, unless the same subscription is specified.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSnapshotName snapshot = ProjectSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
   subscriptionAdminClient.deleteSnapshot(snapshot);
 }
 
Parameter
NameDescription
snapshotProjectSnapshotName

Required. The name of the snapshot to delete. Format is projects/{project}/snapshots/{snap}.

deleteSnapshot(SnapshotName snapshot)

public final void deleteSnapshot(SnapshotName snapshot)

Removes an existing snapshot. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. When the snapshot is deleted, all messages retained in the snapshot are immediately dropped. After a snapshot is deleted, a new one may be created with the same name, but the new one has no association with the old snapshot or its subscription, unless the same subscription is specified.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SnapshotName snapshot = SnapshotName.of("[PROJECT]", "[SNAPSHOT]");
   subscriptionAdminClient.deleteSnapshot(snapshot);
 }
 
Parameter
NameDescription
snapshotSnapshotName

Required. The name of the snapshot to delete. Format is projects/{project}/snapshots/{snap}.

deleteSnapshot(String snapshot)

public final void deleteSnapshot(String snapshot)

Removes an existing snapshot. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. When the snapshot is deleted, all messages retained in the snapshot are immediately dropped. After a snapshot is deleted, a new one may be created with the same name, but the new one has no association with the old snapshot or its subscription, unless the same subscription is specified.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String snapshot = SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString();
   subscriptionAdminClient.deleteSnapshot(snapshot);
 }
 
Parameter
NameDescription
snapshotString

Required. The name of the snapshot to delete. Format is projects/{project}/snapshots/{snap}.

deleteSnapshotCallable()

public final UnaryCallable<DeleteSnapshotRequest,Empty> deleteSnapshotCallable()

Removes an existing snapshot. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. When the snapshot is deleted, all messages retained in the snapshot are immediately dropped. After a snapshot is deleted, a new one may be created with the same name, but the new one has no association with the old snapshot or its subscription, unless the same subscription is specified.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   DeleteSnapshotRequest request =
       DeleteSnapshotRequest.newBuilder()
           .setSnapshot(SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString())
           .build();
   ApiFuture<Empty> future =
       subscriptionAdminClient.deleteSnapshotCallable().futureCall(request);
   // Do something.
   future.get();
 }
 
Returns
TypeDescription
UnaryCallable<DeleteSnapshotRequest,Empty>

deleteSubscription(DeleteSubscriptionRequest request)

public final void deleteSubscription(DeleteSubscriptionRequest request)

Deletes an existing subscription. All messages retained in the subscription are immediately dropped. Calls to Pull after deletion will return NOT_FOUND. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription or its topic unless the same topic is specified.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   DeleteSubscriptionRequest request =
       DeleteSubscriptionRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .build();
   subscriptionAdminClient.deleteSubscription(request);
 }
 
Parameter
NameDescription
requestDeleteSubscriptionRequest

The request object containing all of the parameters for the API call.

deleteSubscription(ProjectSubscriptionName subscription) (deprecated)

public final void deleteSubscription(ProjectSubscriptionName subscription)

Deprecated. Use #deleteSubscription(SubscriptionName) instead.

Deletes an existing subscription. All messages retained in the subscription are immediately dropped. Calls to Pull after deletion will return NOT_FOUND. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription or its topic unless the same topic is specified.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSubscriptionName subscription = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   subscriptionAdminClient.deleteSubscription(subscription);
 }
 
Parameter
NameDescription
subscriptionProjectSubscriptionName

Required. The subscription to delete. Format is projects/{project}/subscriptions/{sub}.

deleteSubscription(SubscriptionName subscription)

public final void deleteSubscription(SubscriptionName subscription)

Deletes an existing subscription. All messages retained in the subscription are immediately dropped. Calls to Pull after deletion will return NOT_FOUND. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription or its topic unless the same topic is specified.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   subscriptionAdminClient.deleteSubscription(subscription);
 }
 
Parameter
NameDescription
subscriptionSubscriptionName

Required. The subscription to delete. Format is projects/{project}/subscriptions/{sub}.

deleteSubscription(String subscription)

public final void deleteSubscription(String subscription)

Deletes an existing subscription. All messages retained in the subscription are immediately dropped. Calls to Pull after deletion will return NOT_FOUND. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription or its topic unless the same topic is specified.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   subscriptionAdminClient.deleteSubscription(subscription);
 }
 
Parameter
NameDescription
subscriptionString

Required. The subscription to delete. Format is projects/{project}/subscriptions/{sub}.

deleteSubscriptionCallable()

public final UnaryCallable<DeleteSubscriptionRequest,Empty> deleteSubscriptionCallable()

Deletes an existing subscription. All messages retained in the subscription are immediately dropped. Calls to Pull after deletion will return NOT_FOUND. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription or its topic unless the same topic is specified.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   DeleteSubscriptionRequest request =
       DeleteSubscriptionRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .build();
   ApiFuture<Empty> future =
       subscriptionAdminClient.deleteSubscriptionCallable().futureCall(request);
   // Do something.
   future.get();
 }
 
Returns
TypeDescription
UnaryCallable<DeleteSubscriptionRequest,Empty>

getIamPolicy(GetIamPolicyRequest request)

public final Policy getIamPolicy(GetIamPolicyRequest request)

Gets the access control policy for a resource. Returns an empty policyif the resource exists and does not have a policy set.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   GetIamPolicyRequest request =
       GetIamPolicyRequest.newBuilder()
           .setResource(ProjectName.of("[PROJECT]").toString())
           .setOptions(GetPolicyOptions.newBuilder().build())
           .build();
   Policy response = subscriptionAdminClient.getIamPolicy(request);
 }
 
Parameter
NameDescription
requestcom.google.iam.v1.GetIamPolicyRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
com.google.iam.v1.Policy

getIamPolicy(String resource) (deprecated)

public final Policy getIamPolicy(String resource)

Deprecated. Use #getIamPolicy(GetIamPolicyRequest) instead.

Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String formattedResource = ProjectTopicName.format("[PROJECT]", "[TOPIC]");
   Policy response = subscriptionAdminClient.getIamPolicy(formattedResource);
 }
 
Parameter
NameDescription
resourceString

REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field.

Returns
TypeDescription
com.google.iam.v1.Policy

getIamPolicyCallable()

public final UnaryCallable<GetIamPolicyRequest,Policy> getIamPolicyCallable()

Gets the access control policy for a resource. Returns an empty policyif the resource exists and does not have a policy set.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   GetIamPolicyRequest request =
       GetIamPolicyRequest.newBuilder()
           .setResource(ProjectName.of("[PROJECT]").toString())
           .setOptions(GetPolicyOptions.newBuilder().build())
           .build();
   ApiFuture<Policy> future = subscriptionAdminClient.getIamPolicyCallable().futureCall(request);
   // Do something.
   Policy response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<com.google.iam.v1.GetIamPolicyRequest,com.google.iam.v1.Policy>

getSettings()

public final SubscriptionAdminSettings getSettings()
Returns
TypeDescription
SubscriptionAdminSettings

getSnapshot(GetSnapshotRequest request)

public final Snapshot getSnapshot(GetSnapshotRequest request)

Gets the configuration details of a snapshot. Snapshots are used in <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>; operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   GetSnapshotRequest request =
       GetSnapshotRequest.newBuilder()
           .setSnapshot(SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString())
           .build();
   Snapshot response = subscriptionAdminClient.getSnapshot(request);
 }
 
Parameter
NameDescription
requestGetSnapshotRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
Snapshot

getSnapshot(ProjectSnapshotName snapshot) (deprecated)

public final Snapshot getSnapshot(ProjectSnapshotName snapshot)

Deprecated. Use Use #getSnapshot(SnapshotName) instead.

Gets the configuration details of a snapshot. Snapshots are used in <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>; operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSnapshotName snapshot = ProjectSnapshotName.of("[PROJECT]", "[SNAPSHOT]");
   Snapshot response = subscriptionAdminClient.getSnapshot(snapshot);
 }
 
Parameter
NameDescription
snapshotProjectSnapshotName

Required. The name of the snapshot to get. Format is projects/{project}/snapshots/{snap}.

Returns
TypeDescription
Snapshot

getSnapshot(SnapshotName snapshot)

public final Snapshot getSnapshot(SnapshotName snapshot)

Gets the configuration details of a snapshot. Snapshots are used in <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>; operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SnapshotName snapshot = SnapshotName.of("[PROJECT]", "[SNAPSHOT]");
   Snapshot response = subscriptionAdminClient.getSnapshot(snapshot);
 }
 
Parameter
NameDescription
snapshotSnapshotName

Required. The name of the snapshot to get. Format is projects/{project}/snapshots/{snap}.

Returns
TypeDescription
Snapshot

getSnapshot(String snapshot)

public final Snapshot getSnapshot(String snapshot)

Gets the configuration details of a snapshot. Snapshots are used in <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>; operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String snapshot = SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString();
   Snapshot response = subscriptionAdminClient.getSnapshot(snapshot);
 }
 
Parameter
NameDescription
snapshotString

Required. The name of the snapshot to get. Format is projects/{project}/snapshots/{snap}.

Returns
TypeDescription
Snapshot

getSnapshotCallable()

public final UnaryCallable<GetSnapshotRequest,Snapshot> getSnapshotCallable()

Gets the configuration details of a snapshot. Snapshots are used in <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>; operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   GetSnapshotRequest request =
       GetSnapshotRequest.newBuilder()
           .setSnapshot(SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString())
           .build();
   ApiFuture<Snapshot> future =
       subscriptionAdminClient.getSnapshotCallable().futureCall(request);
   // Do something.
   Snapshot response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<GetSnapshotRequest,Snapshot>

getStub()

public SubscriberStub getStub()
Returns
TypeDescription
SubscriberStub

getSubscription(GetSubscriptionRequest request)

public final Subscription getSubscription(GetSubscriptionRequest request)

Gets the configuration details of a subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   GetSubscriptionRequest request =
       GetSubscriptionRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .build();
   Subscription response = subscriptionAdminClient.getSubscription(request);
 }
 
Parameter
NameDescription
requestGetSubscriptionRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
Subscription

getSubscription(ProjectSubscriptionName subscription) (deprecated)

public final Subscription getSubscription(ProjectSubscriptionName subscription)

Deprecated. Use #getSubscription(SubscriptionName) instead.

Gets the configuration details of a subscription.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSubscriptionName subscription = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   Subscription response = subscriptionAdminClient.getSubscription(subscription);
 }
 
Parameter
NameDescription
subscriptionProjectSubscriptionName

Required. The name of the subscription to get. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Subscription

getSubscription(SubscriptionName subscription)

public final Subscription getSubscription(SubscriptionName subscription)

Gets the configuration details of a subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   Subscription response = subscriptionAdminClient.getSubscription(subscription);
 }
 
Parameter
NameDescription
subscriptionSubscriptionName

Required. The name of the subscription to get. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Subscription

getSubscription(String subscription)

public final Subscription getSubscription(String subscription)

Gets the configuration details of a subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   Subscription response = subscriptionAdminClient.getSubscription(subscription);
 }
 
Parameter
NameDescription
subscriptionString

Required. The name of the subscription to get. Format is projects/{project}/subscriptions/{sub}.

Returns
TypeDescription
Subscription

getSubscriptionCallable()

public final UnaryCallable<GetSubscriptionRequest,Subscription> getSubscriptionCallable()

Gets the configuration details of a subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   GetSubscriptionRequest request =
       GetSubscriptionRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .build();
   ApiFuture<Subscription> future =
       subscriptionAdminClient.getSubscriptionCallable().futureCall(request);
   // Do something.
   Subscription response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<GetSubscriptionRequest,Subscription>

isShutdown()

public boolean isShutdown()
Returns
TypeDescription
boolean

isTerminated()

public boolean isTerminated()
Returns
TypeDescription
boolean

listSnapshots(ListSnapshotsRequest request)

public final SubscriptionAdminClient.ListSnapshotsPagedResponse listSnapshots(ListSnapshotsRequest request)

Lists the existing snapshots. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ListSnapshotsRequest request =
       ListSnapshotsRequest.newBuilder()
           .setProject(ProjectName.of("[PROJECT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   for (Snapshot element : subscriptionAdminClient.listSnapshots(request).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
requestListSnapshotsRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
SubscriptionAdminClient.ListSnapshotsPagedResponse

listSnapshots(ProjectName project)

public final SubscriptionAdminClient.ListSnapshotsPagedResponse listSnapshots(ProjectName project)

Lists the existing snapshots. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectName project = ProjectName.of("[PROJECT]");
   for (Snapshot element : subscriptionAdminClient.listSnapshots(project).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
projectProjectName

Required. The name of the project in which to list snapshots. Format is projects/{project-id}.

Returns
TypeDescription
SubscriptionAdminClient.ListSnapshotsPagedResponse

listSnapshots(String project)

public final SubscriptionAdminClient.ListSnapshotsPagedResponse listSnapshots(String project)

Lists the existing snapshots. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String project = ProjectName.of("[PROJECT]").toString();
   for (Snapshot element : subscriptionAdminClient.listSnapshots(project).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
projectString

Required. The name of the project in which to list snapshots. Format is projects/{project-id}.

Returns
TypeDescription
SubscriptionAdminClient.ListSnapshotsPagedResponse

listSnapshotsCallable()

public final UnaryCallable<ListSnapshotsRequest,ListSnapshotsResponse> listSnapshotsCallable()

Lists the existing snapshots. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ListSnapshotsRequest request =
       ListSnapshotsRequest.newBuilder()
           .setProject(ProjectName.of("[PROJECT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   while (true) {
     ListSnapshotsResponse response =
         subscriptionAdminClient.listSnapshotsCallable().call(request);
     for (Snapshot element : response.getResponsesList()) {
       // doThingsWith(element);
     }
     String nextPageToken = response.getNextPageToken();
     if (!Strings.isNullOrEmpty(nextPageToken)) {
       request = request.toBuilder().setPageToken(nextPageToken).build();
     } else {
       break;
     }
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListSnapshotsRequest,ListSnapshotsResponse>

listSnapshotsPagedCallable()

public final UnaryCallable<ListSnapshotsRequest,SubscriptionAdminClient.ListSnapshotsPagedResponse> listSnapshotsPagedCallable()

Lists the existing snapshots. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ListSnapshotsRequest request =
       ListSnapshotsRequest.newBuilder()
           .setProject(ProjectName.of("[PROJECT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   ApiFuture<Snapshot> future =
       subscriptionAdminClient.listSnapshotsPagedCallable().futureCall(request);
   // Do something.
   for (Snapshot element : future.get().iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListSnapshotsRequest,ListSnapshotsPagedResponse>

listSubscriptions(ListSubscriptionsRequest request)

public final SubscriptionAdminClient.ListSubscriptionsPagedResponse listSubscriptions(ListSubscriptionsRequest request)

Lists matching subscriptions.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ListSubscriptionsRequest request =
       ListSubscriptionsRequest.newBuilder()
           .setProject(ProjectName.of("[PROJECT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   for (Subscription element : subscriptionAdminClient.listSubscriptions(request).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
requestListSubscriptionsRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
SubscriptionAdminClient.ListSubscriptionsPagedResponse

listSubscriptions(ProjectName project)

public final SubscriptionAdminClient.ListSubscriptionsPagedResponse listSubscriptions(ProjectName project)

Lists matching subscriptions.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectName project = ProjectName.of("[PROJECT]");
   for (Subscription element : subscriptionAdminClient.listSubscriptions(project).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
projectProjectName

Required. The name of the project in which to list subscriptions. Format is projects/{project-id}.

Returns
TypeDescription
SubscriptionAdminClient.ListSubscriptionsPagedResponse

listSubscriptions(String project)

public final SubscriptionAdminClient.ListSubscriptionsPagedResponse listSubscriptions(String project)

Lists matching subscriptions.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String project = ProjectName.of("[PROJECT]").toString();
   for (Subscription element : subscriptionAdminClient.listSubscriptions(project).iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Parameter
NameDescription
projectString

Required. The name of the project in which to list subscriptions. Format is projects/{project-id}.

Returns
TypeDescription
SubscriptionAdminClient.ListSubscriptionsPagedResponse

listSubscriptionsCallable()

public final UnaryCallable<ListSubscriptionsRequest,ListSubscriptionsResponse> listSubscriptionsCallable()

Lists matching subscriptions.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ListSubscriptionsRequest request =
       ListSubscriptionsRequest.newBuilder()
           .setProject(ProjectName.of("[PROJECT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   while (true) {
     ListSubscriptionsResponse response =
         subscriptionAdminClient.listSubscriptionsCallable().call(request);
     for (Subscription element : response.getResponsesList()) {
       // doThingsWith(element);
     }
     String nextPageToken = response.getNextPageToken();
     if (!Strings.isNullOrEmpty(nextPageToken)) {
       request = request.toBuilder().setPageToken(nextPageToken).build();
     } else {
       break;
     }
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListSubscriptionsRequest,ListSubscriptionsResponse>

listSubscriptionsPagedCallable()

public final UnaryCallable<ListSubscriptionsRequest,SubscriptionAdminClient.ListSubscriptionsPagedResponse> listSubscriptionsPagedCallable()

Lists matching subscriptions.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ListSubscriptionsRequest request =
       ListSubscriptionsRequest.newBuilder()
           .setProject(ProjectName.of("[PROJECT]").toString())
           .setPageSize(883849137)
           .setPageToken("pageToken873572522")
           .build();
   ApiFuture<Subscription> future =
       subscriptionAdminClient.listSubscriptionsPagedCallable().futureCall(request);
   // Do something.
   for (Subscription element : future.get().iterateAll()) {
     // doThingsWith(element);
   }
 }
 
Returns
TypeDescription
UnaryCallable<ListSubscriptionsRequest,ListSubscriptionsPagedResponse>

modifyAckDeadline(ModifyAckDeadlineRequest request)

public final void modifyAckDeadline(ModifyAckDeadlineRequest request)

Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level ackDeadlineSeconds used for subsequent messages.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ModifyAckDeadlineRequest request =
       ModifyAckDeadlineRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .addAllAckIds(new ArrayList<String>())
           .setAckDeadlineSeconds(2135351438)
           .build();
   subscriptionAdminClient.modifyAckDeadline(request);
 }
 
Parameter
NameDescription
requestModifyAckDeadlineRequest

The request object containing all of the parameters for the API call.

modifyAckDeadline(SubscriptionName subscription, List<String> ackIds, int ackDeadlineSeconds)

public final void modifyAckDeadline(SubscriptionName subscription, List<String> ackIds, int ackDeadlineSeconds)

Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level ackDeadlineSeconds used for subsequent messages.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   List<String> ackIds = new ArrayList<>();
   int ackDeadlineSeconds = 2135351438;
   subscriptionAdminClient.modifyAckDeadline(subscription, ackIds, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
subscriptionSubscriptionName

Required. The name of the subscription. Format is projects/{project}/subscriptions/{sub}.

ackIdsList<String>

Required. List of acknowledgment IDs.

ackDeadlineSecondsint

Required. The new ack deadline with respect to the time this request was sent to the Pub/Sub system. For example, if the value is 10, the new ack deadline will expire 10 seconds after the ModifyAckDeadline call was made. Specifying zero might immediately make the message available for delivery to another subscriber client. This typically results in an increase in the rate of message redeliveries (that is, duplicates). The minimum deadline you can specify is 0 seconds. The maximum deadline you can specify is 600 seconds (10 minutes).

modifyAckDeadline(String subscription, List<String> ackIds, int ackDeadlineSeconds)

public final void modifyAckDeadline(String subscription, List<String> ackIds, int ackDeadlineSeconds)

Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level ackDeadlineSeconds used for subsequent messages.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   List<String> ackIds = new ArrayList<>();
   int ackDeadlineSeconds = 2135351438;
   subscriptionAdminClient.modifyAckDeadline(subscription, ackIds, ackDeadlineSeconds);
 }
 
Parameters
NameDescription
subscriptionString

Required. The name of the subscription. Format is projects/{project}/subscriptions/{sub}.

ackIdsList<String>

Required. List of acknowledgment IDs.

ackDeadlineSecondsint

Required. The new ack deadline with respect to the time this request was sent to the Pub/Sub system. For example, if the value is 10, the new ack deadline will expire 10 seconds after the ModifyAckDeadline call was made. Specifying zero might immediately make the message available for delivery to another subscriber client. This typically results in an increase in the rate of message redeliveries (that is, duplicates). The minimum deadline you can specify is 0 seconds. The maximum deadline you can specify is 600 seconds (10 minutes).

modifyAckDeadlineCallable()

public final UnaryCallable<ModifyAckDeadlineRequest,Empty> modifyAckDeadlineCallable()

Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level ackDeadlineSeconds used for subsequent messages.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ModifyAckDeadlineRequest request =
       ModifyAckDeadlineRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .addAllAckIds(new ArrayList<String>())
           .setAckDeadlineSeconds(2135351438)
           .build();
   ApiFuture<Empty> future =
       subscriptionAdminClient.modifyAckDeadlineCallable().futureCall(request);
   // Do something.
   future.get();
 }
 
Returns
TypeDescription
UnaryCallable<ModifyAckDeadlineRequest,Empty>

modifyPushConfig(ModifyPushConfigRequest request)

public final void modifyPushConfig(ModifyPushConfigRequest request)

Modifies the PushConfig for a specified subscription.

This may be used to change a push subscription to a pull one (signified by an empty PushConfig) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the PushConfig.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ModifyPushConfigRequest request =
       ModifyPushConfigRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .setPushConfig(PushConfig.newBuilder().build())
           .build();
   subscriptionAdminClient.modifyPushConfig(request);
 }
 
Parameter
NameDescription
requestModifyPushConfigRequest

The request object containing all of the parameters for the API call.

modifyPushConfig(ProjectSubscriptionName subscription, PushConfig pushConfig) (deprecated)

public final void modifyPushConfig(ProjectSubscriptionName subscription, PushConfig pushConfig)

Deprecated. Use #modifyPushConfig(SubscriptionName, PushConfig) instead.

Modifies the PushConfig for a specified subscription.

This may be used to change a push subscription to a pull one (signified by an empty PushConfig) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the PushConfig.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSubscriptionName subscription = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   PushConfig pushConfig = PushConfig.newBuilder().build();
   subscriptionAdminClient.modifyPushConfig(subscription, pushConfig);
 }
 
Parameters
NameDescription
subscriptionProjectSubscriptionName

Required. The name of the subscription. Format is projects/{project}/subscriptions/{sub}.

pushConfigPushConfig

Required. The push configuration for future deliveries.

An empty pushConfig indicates that the Pub/Sub system should stop pushing messages from the given subscription and allow messages to be pulled and acknowledged - effectively pausing the subscription if Pull or StreamingPull is not called.

modifyPushConfig(SubscriptionName subscription, PushConfig pushConfig)

public final void modifyPushConfig(SubscriptionName subscription, PushConfig pushConfig)

Modifies the PushConfig for a specified subscription.

This may be used to change a push subscription to a pull one (signified by an empty PushConfig) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the PushConfig.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   PushConfig pushConfig = PushConfig.newBuilder().build();
   subscriptionAdminClient.modifyPushConfig(subscription, pushConfig);
 }
 
Parameters
NameDescription
subscriptionSubscriptionName

Required. The name of the subscription. Format is projects/{project}/subscriptions/{sub}.

pushConfigPushConfig

Required. The push configuration for future deliveries.

An empty pushConfig indicates that the Pub/Sub system should stop pushing messages from the given subscription and allow messages to be pulled and acknowledged - effectively pausing the subscription if Pull or StreamingPull is not called.

modifyPushConfig(String subscription, PushConfig pushConfig)

public final void modifyPushConfig(String subscription, PushConfig pushConfig)

Modifies the PushConfig for a specified subscription.

This may be used to change a push subscription to a pull one (signified by an empty PushConfig) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the PushConfig.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   PushConfig pushConfig = PushConfig.newBuilder().build();
   subscriptionAdminClient.modifyPushConfig(subscription, pushConfig);
 }
 
Parameters
NameDescription
subscriptionString

Required. The name of the subscription. Format is projects/{project}/subscriptions/{sub}.

pushConfigPushConfig

Required. The push configuration for future deliveries.

An empty pushConfig indicates that the Pub/Sub system should stop pushing messages from the given subscription and allow messages to be pulled and acknowledged - effectively pausing the subscription if Pull or StreamingPull is not called.

modifyPushConfigCallable()

public final UnaryCallable<ModifyPushConfigRequest,Empty> modifyPushConfigCallable()

Modifies the PushConfig for a specified subscription.

This may be used to change a push subscription to a pull one (signified by an empty PushConfig) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the PushConfig.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ModifyPushConfigRequest request =
       ModifyPushConfigRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .setPushConfig(PushConfig.newBuilder().build())
           .build();
   ApiFuture<Empty> future =
       subscriptionAdminClient.modifyPushConfigCallable().futureCall(request);
   // Do something.
   future.get();
 }
 
Returns
TypeDescription
UnaryCallable<ModifyPushConfigRequest,Empty>

pull(ProjectSubscriptionName subscription, int maxMessages) (deprecated)

public final PullResponse pull(ProjectSubscriptionName subscription, int maxMessages)

Deprecated. Use #pull(SubscriptionName, int) instead.

Pulls messages from the server. The server may return UNAVAILABLE if there are too many concurrent pull requests pending for the given subscription.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   ProjectSubscriptionName subscription = ProjectSubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   int maxMessages = 496131527;
   PullResponse response = subscriptionAdminClient.pull(subscription, maxMessages);
 }
 
Parameters
NameDescription
subscriptionProjectSubscriptionName

Required. The subscription from which messages should be pulled. Format is projects/{project}/subscriptions/{sub}.

maxMessagesint

Required. The maximum number of messages to return for this request. Must be a positive integer. The Pub/Sub system may return fewer than the number specified.

Returns
TypeDescription
PullResponse

pull(PullRequest request)

public final PullResponse pull(PullRequest request)

Pulls messages from the server. The server may return UNAVAILABLE if there are too many concurrent pull requests pending for the given subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   PullRequest request =
       PullRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .setReturnImmediately(true)
           .setMaxMessages(496131527)
           .build();
   PullResponse response = subscriptionAdminClient.pull(request);
 }
 
Parameter
NameDescription
requestPullRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
PullResponse

pull(SubscriptionName subscription, boolean returnImmediately, int maxMessages)

public final PullResponse pull(SubscriptionName subscription, boolean returnImmediately, int maxMessages)

Pulls messages from the server. The server may return UNAVAILABLE if there are too many concurrent pull requests pending for the given subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   boolean returnImmediately = true;
   int maxMessages = 496131527;
   PullResponse response =
       subscriptionAdminClient.pull(subscription, returnImmediately, maxMessages);
 }
 
Parameters
NameDescription
subscriptionSubscriptionName

Required. The subscription from which messages should be pulled. Format is projects/{project}/subscriptions/{sub}.

returnImmediatelyboolean

Optional. If this field set to true, the system will respond immediately even if it there are no messages available to return in the Pull response. Otherwise, the system may wait (for a bounded amount of time) until at least one message is available, rather than returning no messages. Warning: setting this field to true is discouraged because it adversely impacts the performance of Pull operations. We recommend that users do not set this field.

maxMessagesint

Required. The maximum number of messages to return for this request. Must be a positive integer. The Pub/Sub system may return fewer than the number specified.

Returns
TypeDescription
PullResponse

pull(SubscriptionName subscription, int maxMessages)

public final PullResponse pull(SubscriptionName subscription, int maxMessages)

Pulls messages from the server. The server may return UNAVAILABLE if there are too many concurrent pull requests pending for the given subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SubscriptionName subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]");
   int maxMessages = 496131527;
   PullResponse response = subscriptionAdminClient.pull(subscription, maxMessages);
 }
 
Parameters
NameDescription
subscriptionSubscriptionName

Required. The subscription from which messages should be pulled. Format is projects/{project}/subscriptions/{sub}.

maxMessagesint

Required. The maximum number of messages to return for this request. Must be a positive integer. The Pub/Sub system may return fewer than the number specified.

Returns
TypeDescription
PullResponse

pull(String subscription, boolean returnImmediately, int maxMessages)

public final PullResponse pull(String subscription, boolean returnImmediately, int maxMessages)

Pulls messages from the server. The server may return UNAVAILABLE if there are too many concurrent pull requests pending for the given subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   boolean returnImmediately = true;
   int maxMessages = 496131527;
   PullResponse response =
       subscriptionAdminClient.pull(subscription, returnImmediately, maxMessages);
 }
 
Parameters
NameDescription
subscriptionString

Required. The subscription from which messages should be pulled. Format is projects/{project}/subscriptions/{sub}.

returnImmediatelyboolean

Optional. If this field set to true, the system will respond immediately even if it there are no messages available to return in the Pull response. Otherwise, the system may wait (for a bounded amount of time) until at least one message is available, rather than returning no messages. Warning: setting this field to true is discouraged because it adversely impacts the performance of Pull operations. We recommend that users do not set this field.

maxMessagesint

Required. The maximum number of messages to return for this request. Must be a positive integer. The Pub/Sub system may return fewer than the number specified.

Returns
TypeDescription
PullResponse

pull(String subscription, int maxMessages)

public final PullResponse pull(String subscription, int maxMessages)

Pulls messages from the server. The server may return UNAVAILABLE if there are too many concurrent pull requests pending for the given subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String subscription = SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString();
   int maxMessages = 496131527;
   PullResponse response = subscriptionAdminClient.pull(subscription, maxMessages);
 }
 
Parameters
NameDescription
subscriptionString

Required. The subscription from which messages should be pulled. Format is projects/{project}/subscriptions/{sub}.

maxMessagesint

Required. The maximum number of messages to return for this request. Must be a positive integer. The Pub/Sub system may return fewer than the number specified.

Returns
TypeDescription
PullResponse

pullCallable()

public final UnaryCallable<PullRequest,PullResponse> pullCallable()

Pulls messages from the server. The server may return UNAVAILABLE if there are too many concurrent pull requests pending for the given subscription.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   PullRequest request =
       PullRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .setReturnImmediately(true)
           .setMaxMessages(496131527)
           .build();
   ApiFuture<PullResponse> future = subscriptionAdminClient.pullCallable().futureCall(request);
   // Do something.
   PullResponse response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<PullRequest,PullResponse>

seek(SeekRequest request)

public final SeekResponse seek(SeekRequest request)

Seeks an existing subscription to a point in time or to a given snapshot, whichever is provided in the request. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. Note that both the subscription and the snapshot must be on the same topic.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SeekRequest request =
       SeekRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .build();
   SeekResponse response = subscriptionAdminClient.seek(request);
 }
 
Parameter
NameDescription
requestSeekRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
SeekResponse

seekCallable()

public final UnaryCallable<SeekRequest,SeekResponse> seekCallable()

Seeks an existing subscription to a point in time or to a given snapshot, whichever is provided in the request. Snapshots are used in Seek operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot. Note that both the subscription and the snapshot must be on the same topic.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SeekRequest request =
       SeekRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .build();
   ApiFuture<SeekResponse> future = subscriptionAdminClient.seekCallable().futureCall(request);
   // Do something.
   SeekResponse response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<SeekRequest,SeekResponse>

setIamPolicy(SetIamPolicyRequest request)

public final Policy setIamPolicy(SetIamPolicyRequest request)

Sets the access control policy on the specified resource. Replacesany existing policy.

Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIEDerrors.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SetIamPolicyRequest request =
       SetIamPolicyRequest.newBuilder()
           .setResource(ProjectName.of("[PROJECT]").toString())
           .setPolicy(Policy.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   Policy response = subscriptionAdminClient.setIamPolicy(request);
 }
 
Parameter
NameDescription
requestcom.google.iam.v1.SetIamPolicyRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
com.google.iam.v1.Policy

setIamPolicy(String resource, Policy policy) (deprecated)

public final Policy setIamPolicy(String resource, Policy policy)

Deprecated. Use #setIamPolicy(SetIamPolicyRequest) instead.

Sets the access control policy on the specified resource. Replaces any existing policy.

Can return Public Errors: NOT_FOUND, INVALID_ARGUMENT and PERMISSION_DENIED

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String formattedResource = ProjectTopicName.format("[PROJECT]", "[TOPIC]");
   Policy policy = Policy.newBuilder().build();
   Policy response = subscriptionAdminClient.setIamPolicy(formattedResource, policy);
 }
 
Parameters
NameDescription
resourceString

REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field.

policycom.google.iam.v1.Policy

REQUIRED: The complete policy to be applied to the resource. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.

Returns
TypeDescription
com.google.iam.v1.Policy

setIamPolicyCallable()

public final UnaryCallable<SetIamPolicyRequest,Policy> setIamPolicyCallable()

Sets the access control policy on the specified resource. Replacesany existing policy.

Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIEDerrors.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   SetIamPolicyRequest request =
       SetIamPolicyRequest.newBuilder()
           .setResource(ProjectName.of("[PROJECT]").toString())
           .setPolicy(Policy.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   ApiFuture<Policy> future = subscriptionAdminClient.setIamPolicyCallable().futureCall(request);
   // Do something.
   Policy response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<com.google.iam.v1.SetIamPolicyRequest,com.google.iam.v1.Policy>

shutdown()

public void shutdown()

shutdownNow()

public void shutdownNow()

streamingPullCallable()

public final BidiStreamingCallable<StreamingPullRequest,StreamingPullResponse> streamingPullCallable()

Establishes a stream with the server, which sends messages down to the client. The client streams acknowledgements and ack deadline modifications back to the server. The server will close the stream and return the status on any error. The server may close the stream with status UNAVAILABLE to reassign server-side resources, in which case, the client should re-establish the stream. Flow control can be achieved by configuring the underlying RPC channel.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   BidiStream<StreamingPullRequest, StreamingPullResponse> bidiStream =
       subscriptionAdminClient.streamingPullCallable().call();
   StreamingPullRequest request =
       StreamingPullRequest.newBuilder()
           .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
           .addAllAckIds(new ArrayList<String>())
           .addAllModifyDeadlineSeconds(new ArrayList<Integer>())
           .addAllModifyDeadlineAckIds(new ArrayList<String>())
           .setStreamAckDeadlineSeconds(1875467245)
           .setClientId("clientId908408390")
           .setMaxOutstandingMessages(-1315266996)
           .setMaxOutstandingBytes(-2103098517)
           .build();
   bidiStream.send(request);
   for (StreamingPullResponse response : bidiStream) {
     // Do something when a response is received.
   }
 }
 
Returns
TypeDescription
BidiStreamingCallable<StreamingPullRequest,StreamingPullResponse>

testIamPermissions(TestIamPermissionsRequest request)

public final TestIamPermissionsResponse testIamPermissions(TestIamPermissionsRequest request)

Returns permissions that a caller has on the specified resource. If theresource does not exist, this will return an empty set ofpermissions, not a NOT_FOUND error.

Note: This operation is designed to be used for buildingpermission-aware UIs and command-line tools, not for authorizationchecking. This operation may "fail open" without warning.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   TestIamPermissionsRequest request =
       TestIamPermissionsRequest.newBuilder()
           .setResource(ProjectName.of("[PROJECT]").toString())
           .addAllPermissions(new ArrayList<String>())
           .build();
   TestIamPermissionsResponse response = subscriptionAdminClient.testIamPermissions(request);
 }
 
Parameter
NameDescription
requestcom.google.iam.v1.TestIamPermissionsRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
com.google.iam.v1.TestIamPermissionsResponse

testIamPermissions(String resource, List<String> permissions) (deprecated)

public final TestIamPermissionsResponse testIamPermissions(String resource, List<String> permissions)

Deprecated. Use #testIamPermissions(TestIamPermissionsRequest) instead.

Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.

Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may "fail open" without warning.

Sample code:


 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   String formattedResource = ProjectTopicName.format("[PROJECT]", "[TOPIC]");
   List<String> permissions = new ArrayList<>();
   TestIamPermissionsResponse response = subscriptionAdminClient.testIamPermissions(formattedResource, permissions);
 }
 
Parameters
NameDescription
resourceString

REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field.

permissionsList<String>

The set of permissions to check for the resource. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see IAM Overview.

Returns
TypeDescription
com.google.iam.v1.TestIamPermissionsResponse

testIamPermissionsCallable()

public final UnaryCallable<TestIamPermissionsRequest,TestIamPermissionsResponse> testIamPermissionsCallable()

Returns permissions that a caller has on the specified resource. If theresource does not exist, this will return an empty set ofpermissions, not a NOT_FOUND error.

Note: This operation is designed to be used for buildingpermission-aware UIs and command-line tools, not for authorizationchecking. This operation may "fail open" without warning.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   TestIamPermissionsRequest request =
       TestIamPermissionsRequest.newBuilder()
           .setResource(ProjectName.of("[PROJECT]").toString())
           .addAllPermissions(new ArrayList<String>())
           .build();
   ApiFuture<TestIamPermissionsResponse> future =
       subscriptionAdminClient.testIamPermissionsCallable().futureCall(request);
   // Do something.
   TestIamPermissionsResponse response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<com.google.iam.v1.TestIamPermissionsRequest,com.google.iam.v1.TestIamPermissionsResponse>

updateSnapshot(UpdateSnapshotRequest request)

public final Snapshot updateSnapshot(UpdateSnapshotRequest request)

Updates an existing snapshot. Snapshots are used in <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>; operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   UpdateSnapshotRequest request =
       UpdateSnapshotRequest.newBuilder()
           .setSnapshot(Snapshot.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   Snapshot response = subscriptionAdminClient.updateSnapshot(request);
 }
 
Parameter
NameDescription
requestUpdateSnapshotRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
Snapshot

updateSnapshotCallable()

public final UnaryCallable<UpdateSnapshotRequest,Snapshot> updateSnapshotCallable()

Updates an existing snapshot. Snapshots are used in <a href="https://cloud.google.com/pubsub/docs/replay-overview">Seek</a>; operations, which allow you to manage message acknowledgments in bulk. That is, you can set the acknowledgment state of messages in an existing subscription to the state captured by a snapshot.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   UpdateSnapshotRequest request =
       UpdateSnapshotRequest.newBuilder()
           .setSnapshot(Snapshot.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   ApiFuture<Snapshot> future =
       subscriptionAdminClient.updateSnapshotCallable().futureCall(request);
   // Do something.
   Snapshot response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<UpdateSnapshotRequest,Snapshot>

updateSubscription(UpdateSubscriptionRequest request)

public final Subscription updateSubscription(UpdateSubscriptionRequest request)

Updates an existing subscription. Note that certain properties of a subscription, such as its topic, are not modifiable.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   UpdateSubscriptionRequest request =
       UpdateSubscriptionRequest.newBuilder()
           .setSubscription(Subscription.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   Subscription response = subscriptionAdminClient.updateSubscription(request);
 }
 
Parameter
NameDescription
requestUpdateSubscriptionRequest

The request object containing all of the parameters for the API call.

Returns
TypeDescription
Subscription

updateSubscriptionCallable()

public final UnaryCallable<UpdateSubscriptionRequest,Subscription> updateSubscriptionCallable()

Updates an existing subscription. Note that certain properties of a subscription, such as its topic, are not modifiable.

Sample code:


 // This snippet has been automatically generated for illustrative purposes only.
 // It may require modifications to work in your environment.
 try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
   UpdateSubscriptionRequest request =
       UpdateSubscriptionRequest.newBuilder()
           .setSubscription(Subscription.newBuilder().build())
           .setUpdateMask(FieldMask.newBuilder().build())
           .build();
   ApiFuture<Subscription> future =
       subscriptionAdminClient.updateSubscriptionCallable().futureCall(request);
   // Do something.
   Subscription response = future.get();
 }
 
Returns
TypeDescription
UnaryCallable<UpdateSubscriptionRequest,Subscription>