syntax = "proto3"; package queues; import "google/protobuf/struct.proto"; service Tasks { rpc Put (PutRequest) returns (EmptyResponse) {} rpc Take (TakeRequest) returns (TakeResponse) {} rpc Finish (FinishRequest) returns (EmptyResponse) {} } message Task { string id = 1; int64 attempt = 2; google.protobuf.Struct payload = 3; } message PutRequest { string queue = 1; int64 seconds_to_execute = 2; optional int64 delay = 3; google.protobuf.Struct payload = 4; } message TakeRequest { string queue = 1; } message FinishRequest { string id = 1; } message EmptyResponse {} message TakeResponse { optional Task task = 1; }