Hi all,
I was hoping for some advice for designing my publish subscribe system on 
top of protobuf and rpc.

The idea is that a developer may have defined set of messages, a normal 
service and some rpc methods which they then augment with some publishers 
and subscribers.

For example, given this ordinary service..

syntax = "proto3";
package helloworld;

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

I'm thinking of creating my own extensions and options so a developer can 
describe which messages it publishes and what messages it subscribes to but 
I'm struggling with how to implement it, here's a proposal of a annotated 
proto

syntax = "proto3";
package helloworld;

enum Broadcasts {
  HELLO = 0;
}

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}

  option (subscribers) = {
    publisher {
      name: HELLO
      returns: HelloReply
    }

    subscriber {
      name: HELLO
    }

    subscriber {
      name: some_service.CREATED
    }
  };

}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

The problem is in defining the .proto for the subscribers option, how do I 
create a message/extention which accepts an ENUM or Message type as a value 
to be set.

I'm also open to completely different ways of designing this, but I was 
hoping to have a way to define subscribers and publishers in a typed way 
that shows me the dependencies so I can then generate the code.

Any help would be appreciated! Thanks

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to