No tarball for gmail
This commit is contained in:
33
grpc/index.js
Normal file
33
grpc/index.js
Normal file
@@ -0,0 +1,33 @@
|
||||
import grpc from '@grpc/grpc-js';
|
||||
import proto from '@grpc/proto-loader';
|
||||
|
||||
export function loadPubSub() {
|
||||
const PROTO_PATH = 'grpc/service.proto';
|
||||
const packageDefinition = proto.loadSync(PROTO_PATH, {});
|
||||
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
|
||||
return protoDescriptor.pubsub;
|
||||
}
|
||||
export function setupgRPC(handler) {
|
||||
const server = new grpc.Server();
|
||||
const pubsub = loadPubSub();
|
||||
server.addService(pubsub.PubSub.service, handler)
|
||||
return server
|
||||
}
|
||||
|
||||
export function createClient(address) {
|
||||
const pubsub = loadPubSub()
|
||||
return new pubsub.PubSub(address, grpc.credentials.createInsecure());
|
||||
}
|
||||
|
||||
export function startServer(
|
||||
address,
|
||||
handler,
|
||||
logger,
|
||||
) {
|
||||
const server = setupgRPC(handler)
|
||||
server.bindAsync(address, grpc.ServerCredentials.createInsecure(), () => {
|
||||
logger.info(`Started server on ${address}`)
|
||||
server.start();
|
||||
});
|
||||
return server
|
||||
}
|
||||
27
grpc/service.proto
Normal file
27
grpc/service.proto
Normal file
@@ -0,0 +1,27 @@
|
||||
syntax = "proto3";
|
||||
package pubsub;
|
||||
|
||||
service PubSub {
|
||||
|
||||
rpc Publish(PublishMessage) returns (PublishResponse) {}
|
||||
|
||||
rpc Consume(Consumer) returns (Message) {}
|
||||
|
||||
}
|
||||
|
||||
message PublishResponse {
|
||||
}
|
||||
|
||||
message Consumer {
|
||||
string topic = 1;
|
||||
uint64 timeout_ms = 2;
|
||||
}
|
||||
|
||||
message PublishMessage {
|
||||
string topic = 1;
|
||||
string message = 2;
|
||||
}
|
||||
|
||||
message Message {
|
||||
string message = 1;
|
||||
}
|
||||
Reference in New Issue
Block a user