grpc-gcp provides gRPC support for Google Cloud Clients.
This module is currently used by the Google Cloud Spanner client library to provide
gRPC-GCP channel pooling and related transport behavior. It is published separately
as com.google.cloud:grpc-gcp because Spanner exposes grpc-gcp types in its public
API.
Use Spanner API as an example.
First, Create a json file defining API configuration, with ChannelPoolConfig and MethodConfig.
{
"channelPool": {
"maxSize": 3,
"maxConcurrentStreamsLowWatermark": 0
},
"method": [
{
"name": [ "google.spanner.v1.Spanner/CreateSession" ],
"affinity": {
"command": "BIND",
"affinityKey": "name"
}
},
{
"name": [ "google.spanner.v1.Spanner/GetSession" ],
"affinity": {
"command": "BOUND",
"affinityKey": "name"
}
},
{
"name": [ "google.spanner.v1.Spanner/DeleteSession" ],
"affinity": {
"command": "UNBIND",
"affinityKey": "name"
}
}
]
}Initialize GcpManagedChannel based on this API config file.
String API_CONFIG_FILE = "api_config_file.json"
String SPANNER_TARGET = "spanner.googleapis.com";
...
ManagedChannelBuilder delegateChannelBuilder = ManagedChannelBuilder.forAddress(SPANNER_TARGET, 443);
GcpManagedChannelBuilder gcpBuilder =
GcpManagedChannelBuilder.forDelegateBuilder(delegateChannelBuilder)
.withApiConfigJsonFile(jsonApiConfig);
ManagedChannel gcpChannel = gcpBuilder.build();Create Cloud API stub using GcpManagedChannel.
GoogleCredentials creds = getCreds();
SpannerBlockingStub stub =
SpannerGrpc.newBlockingStub(gcpChannel)
.withCallCredentials(MoreCallCredentials.from(creds));Download source.
git clone https://github.com/googleapis/google-cloud-java.git && cd google-cloud-java/grpc-gcp-javaBuild project with unit tests.
mvn verifyInstall the jar to your local Maven repository.
mvn installSetup credentials. See Getting Started With Authentication for more details.
export GOOGLE_APPLICATION_CREDENTIALS=path/to/key.jsonexport GCP_PROJECT_ID=project_idRun unit tests.
mvn testIntegration tests are kept as source references but are not wired into the default monorepo Maven lifecycle.
This artifact is released by the google-cloud-java monorepo release pipeline.
Run google-java-format
mvn fmt:format