import ballerina/io;
import ballerina/grpc;
endpoint grpc:Service ep {
host:"localhost",
port:9090
};@grpc:serviceConfig {rpcEndpoint:"lotsOfGreetings",
clientStreaming:true,
generateClientConnector:false}
service<grpc:Listener> HelloWorld bind ep {
onOpen (endpoint client) {
io:println("connected sucessfully.");
} onMessage (endpoint client, string name) {
io:println("greet received: " + name);
} onError (endpoint client, grpc:ServerError err) {
if (err != ()) {
io:println("Something unexpected happens at server : " + err.message);
}
} onComplete (endpoint client) {
io:println("Server Response");
grpc:ConnectorError err = client -> send("Ack");
if (err != ()) {
io:println("Error at onComplete send message : " + err.message);
}
}
}
gRPC Client StreamingThe gRPC Server Connector can be used to expose service gRPC service over http2. This sample is to demonstrate gRPC client streaming service interacting with gRPC non-blocking client. |
|
import ballerina/io;
import ballerina/grpc;
|
This is server implementation for client streaming scenario |
endpoint grpc:Service ep {
host:"localhost",
port:9090
};
|
Server endpoint configuration |
@grpc:serviceConfig {rpcEndpoint:"lotsOfGreetings",
clientStreaming:true,
generateClientConnector:false}
service<grpc:Listener> HelloWorld bind ep {
onOpen (endpoint client) {
io:println("connected sucessfully.");
}
|
|
onMessage (endpoint client, string name) {
io:println("greet received: " + name);
}
|
|
onError (endpoint client, grpc:ServerError err) {
if (err != ()) {
io:println("Something unexpected happens at server : " + err.message);
}
}
|
|
onComplete (endpoint client) {
io:println("Server Response");
grpc:ConnectorError err = client -> send("Ack");
if (err != ()) {
io:println("Error at onComplete send message : " + err.message);
}
}
}
|
|
$ ballerina run grpc-client-streaming.bal
ballerina: initiating service(s) in 'grpc-client-streaming.bal'
|
Run the service |
ballerina run client
|
Run client connector |