@BetaApi(value="This feature is currently experimental and can change in the future") public final class BigtableDataClientFactory extends Object implements AutoCloseable
BigtableDataClient instances that all share the same channel
pool.
This allows multiple client instances to share the same gRPC channel pool, which makes client creation very cheap. The intended use case is for applications that need to access multiple Bigtable Instances from the same process.
Example Usage:
BigtableDataSettings defaultSettings = BigtableDataSettings.newBuilder()
.setProject("my-default-project")
.setInstance("my-default-instance")
.build();
BigtableDataClientFactory clientFactory = BigtableDataClientFactory.create(defaultSettings);
// Create a new client for "my-default-instance" in "my-default-project";
BigtableDataClient defaultInstanceClient = clientFactory.createDefault();
// Create a new client for a different application profile
BigtableDataClient otherAppProfileClient = clientFactory.createForAppProfile("other-app-profile");
// Create a new client for a completely different instance and application profile.
BigtableDataClient otherInstanceClient = clientFactory
.createForInstance("my-other-project", "my-other-instance", "my-other-app-profile");
// Clean up: make sure close the clients AND the factory.
defaultInstanceClient.close();
otherAppProfileClient.close();
otherInstanceClient.close();
clientFactory.close();
<p>Please note that this is an experimental feature and might be changed or removed in future.
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Release all of the resources associated with this factory.
|
static BigtableDataClientFactory |
create(BigtableDataSettings defaultSettings)
Create a instance of this factory.
|
BigtableDataClient |
createDefault()
Create a lightweight client using the default settings in this factory.
|
BigtableDataClient |
createForAppProfile(String appProfileId)
Create a lightweight client with an overriden application profile and the factory default
project and instance ids.
|
BigtableDataClient |
createForInstance(String projectId,
String instanceId)
Create a lightweight client with the specified project and instance id.
|
BigtableDataClient |
createForInstance(String projectId,
String instanceId,
String appProfileId)
Create a lightweight client to the specified project, instance and application profile id.
|
public static BigtableDataClientFactory create(BigtableDataSettings defaultSettings) throws IOException
The factory will be used to create clients using the provided settings as the base. Make
sure to call close() on the factory after closing all clients.
IOExceptionpublic void close()
throws Exception
This will close the underlying channel pooling, disconnecting all create clients.
close in interface AutoCloseableExceptionpublic BigtableDataClient createDefault()
The client should be closed when it is no longer needed. Closing the client will release client specific resources, but will leave shared resources like the channel pool open. To release all resources, first close all of the created clients and then this factory instance.
public BigtableDataClient createForAppProfile(@Nonnull String appProfileId) throws IOException
The client should be closed when it is no longer needed. Closing the client will release client specific resources, but will leave shared resources like the channel pool open. To release all resources, first close all of the created clients and then this factory instance.
IOExceptionpublic BigtableDataClient createForInstance(@Nonnull String projectId, @Nonnull String instanceId) throws IOException
The client should be closed when it is no longer needed. Closing the client will release client specific resources, but will leave shared resources like the channel pool open. To release all resources, first close all of the created clients and then this factory instance.
IOExceptionpublic BigtableDataClient createForInstance(@Nonnull String projectId, @Nonnull String instanceId, @Nonnull String appProfileId) throws IOException
The client should be closed when it is no longer needed. Closing the client will release client specific resources, but will leave shared resources like the channel pool open. To release all resources, first close all of the created clients and then this factory instance.
IOExceptionCopyright © 2021 Google LLC. All rights reserved.