grpc-gcp provides gRPC support for Google Cloud Clients.
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/GoogleCloudPlatform/grpc-gcp-java.git && cd grpc-gcp-java/grpc-gcpBuild 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 testRun unit tests and integration tests:
mvn verify -DskipITs=falsePublish a release build using the Maven release profile inherited from shared config.
mvn deploy -DperformRelease=trueRun google-java-format
mvn fmt:format