syntax = "proto3"; package messaging_pb; option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/mq_pb"; option java_package = "seaweedfs.mq"; option java_outer_classname = "MessagQueueProto"; ////////////////////////////////////////////////// service SeaweedMessaging { // control plane rpc FindBrokerLeader (FindBrokerLeaderRequest) returns (FindBrokerLeaderResponse) { } rpc AssignSegmentBrokers (AssignSegmentBrokersRequest) returns (AssignSegmentBrokersResponse) { } rpc CheckSegmentStatus (CheckSegmentStatusRequest) returns (CheckSegmentStatusResponse) { } rpc CheckBrokerLoad (CheckBrokerLoadRequest) returns (CheckBrokerLoadResponse) { } // data plane rpc PublishMessage (stream PublishRequest) returns (stream PublishResponse) { } } ////////////////////////////////////////////////// message SegmentInfos { repeated SegmentInfo segment_infos = 1; } message Topic { string namespace = 1; string topic = 2; } message SegmentInfo { Segment segment = 1; int64 start_ts_ns = 2; repeated string brokers = 3; int64 stop_ts_ns = 4; } message Segment { int32 id = 1; int32 ring_size = 2; int32 range_start = 3; int32 range_stop = 4; } ////////////////////////////////////////////////// message FindBrokerLeaderRequest { string filer_group = 1; } message FindBrokerLeaderResponse { string broker = 1; } message AssignSegmentBrokersRequest { Topic topic = 1; Segment segment = 2; } message AssignSegmentBrokersResponse { repeated string brokers = 1; } message CheckSegmentStatusRequest { Topic topic = 1; Segment segment = 2; } message CheckSegmentStatusResponse { bool is_active = 1; } message CheckBrokerLoadRequest { } message CheckBrokerLoadResponse { int64 message_count = 1; int64 bytes_count = 2; } ////////////////////////////////////////////////// message PublishRequest { message DataMessage { bytes message = 1; } DataMessage data = 1; message ControlMessage { Segment segment = 1; } ControlMessage control = 2; } message PublishResponse { int64 ack_sequence = 1; bool is_closed = 2; }