123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- syntax = "proto3";
- package messaging_pb;
- import "schema.proto";
- option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/mq_pb";
- option java_package = "seaweedfs.mq";
- option java_outer_classname = "MessageQueueProto";
- //////////////////////////////////////////////////
- service SeaweedMessaging {
- // control plane
- rpc FindBrokerLeader (FindBrokerLeaderRequest) returns (FindBrokerLeaderResponse) {
- }
- // control plane for balancer
- rpc PublisherToPubBalancer (stream PublisherToPubBalancerRequest) returns (stream PublisherToPubBalancerResponse) {
- }
- rpc BalanceTopics (BalanceTopicsRequest) returns (BalanceTopicsResponse) {
- }
- // control plane for topic partitions
- rpc ListTopics (ListTopicsRequest) returns (ListTopicsResponse) {
- }
- rpc ConfigureTopic (ConfigureTopicRequest) returns (ConfigureTopicResponse) {
- }
- rpc LookupTopicBrokers (LookupTopicBrokersRequest) returns (LookupTopicBrokersResponse) {
- }
- // invoked by the balancer, running on each broker
- rpc AssignTopicPartitions (AssignTopicPartitionsRequest) returns (AssignTopicPartitionsResponse) {
- }
- rpc ClosePublishers(ClosePublishersRequest) returns (ClosePublishersResponse) {
- }
- rpc CloseSubscribers(CloseSubscribersRequest) returns (CloseSubscribersResponse) {
- }
- // subscriber connects to broker balancer, which coordinates with the subscribers
- rpc SubscriberToSubCoordinator (stream SubscriberToSubCoordinatorRequest) returns (stream SubscriberToSubCoordinatorResponse) {
- }
- // data plane for each topic partition
- rpc PublishMessage (stream PublishMessageRequest) returns (stream PublishMessageResponse) {
- }
- rpc SubscribeMessage (SubscribeMessageRequest) returns (stream SubscribeMessageResponse) {
- }
- // The lead broker asks a follower broker to follow itself
- rpc PublishFollowMe (stream PublishFollowMeRequest) returns (stream PublishFollowMeResponse) {
- }
- }
- //////////////////////////////////////////////////
- message FindBrokerLeaderRequest {
- string filer_group = 1;
- }
- message FindBrokerLeaderResponse {
- string broker = 1;
- }
- message Topic {
- string namespace = 1;
- string name = 2;
- }
- message Partition {
- int32 ring_size = 1;
- int32 range_start = 2;
- int32 range_stop = 3;
- int64 unix_time_ns = 4;
- }
- message Offset {
- Topic topic = 1;
- repeated PartitionOffset partition_offsets = 2;
- }
- enum PartitionOffsetStartType {
- EARLIEST = 0;
- EARLIEST_IN_MEMORY = 1;
- LATEST = 2;
- }
- message PartitionOffset {
- Partition partition = 1;
- int64 start_ts_ns = 2;
- int64 stop_ts_ns = 3;
- PartitionOffsetStartType start_type = 4;
- }
- //////////////////////////////////////////////////
- message BrokerStats {
- int32 cpu_usage_percent = 1;
- map<string, TopicPartitionStats> stats = 2;
- }
- message TopicPartitionStats {
- Topic topic = 1;
- Partition partition = 2;
- int32 publisher_count = 3;
- int32 subscriber_count = 4;
- }
- message PublisherToPubBalancerRequest {
- message InitMessage {
- string broker = 1;
- }
- oneof message {
- InitMessage init = 1;
- BrokerStats stats = 2;
- }
- }
- message PublisherToPubBalancerResponse {
- }
- message BalanceTopicsRequest {
- }
- message BalanceTopicsResponse {
- }
- //////////////////////////////////////////////////
- message ConfigureTopicRequest {
- Topic topic = 1;
- int32 partition_count = 2;
- schema_pb.RecordType record_type = 3;
- }
- message ConfigureTopicResponse {
- repeated BrokerPartitionAssignment broker_partition_assignments = 2;
- schema_pb.RecordType record_type = 3;
- }
- message ListTopicsRequest {
- }
- message ListTopicsResponse {
- repeated Topic topics = 1;
- }
- message LookupTopicBrokersRequest {
- Topic topic = 1;
- }
- message LookupTopicBrokersResponse {
- Topic topic = 1;
- repeated BrokerPartitionAssignment broker_partition_assignments = 2;
- }
- message BrokerPartitionAssignment {
- Partition partition = 1;
- string leader_broker = 2;
- repeated string follower_brokers = 3;
- }
- message AssignTopicPartitionsRequest {
- Topic topic = 1;
- repeated BrokerPartitionAssignment broker_partition_assignments = 2;
- bool is_leader = 3;
- bool is_draining = 4;
- }
- message AssignTopicPartitionsResponse {
- }
- message SubscriberToSubCoordinatorRequest {
- message InitMessage {
- string consumer_group = 1;
- string consumer_group_instance_id = 2;
- Topic topic = 3;
- }
- message AckMessage {
- Partition partition = 1;
- int64 ts_ns = 2;
- }
- oneof message {
- InitMessage init = 1;
- AckMessage ack = 2;
- }
- }
- message SubscriberToSubCoordinatorResponse {
- message Assignment {
- int64 generation = 1;
- repeated BrokerPartitionAssignment partition_assignments = 2;
- }
- oneof message {
- Assignment assignment = 1;
- }
- }
- //////////////////////////////////////////////////
- message ControlMessage {
- bool is_close = 1;
- }
- message DataMessage {
- bytes key = 1;
- bytes value = 2;
- int64 ts_ns = 3;
- ControlMessage ctrl = 4;
- }
- message PublishMessageRequest {
- message InitMessage {
- Topic topic = 1;
- Partition partition = 2;
- int32 ack_interval = 3;
- repeated string follower_brokers = 4;
- string publisher_name = 5; // for debugging
- }
- oneof message {
- InitMessage init = 1;
- DataMessage data = 2;
- }
- int64 sequence = 3;
- }
- message PublishMessageResponse {
- int64 ack_sequence = 1;
- string error = 2;
- bool should_close = 3;
- }
- message PublishFollowMeRequest {
- message InitMessage {
- Topic topic = 1;
- Partition partition = 2;
- }
- message FlushMessage {
- int64 ts_ns = 1;
- }
- message CloseMessage {
- }
- oneof message {
- InitMessage init = 1;
- DataMessage data = 2;
- FlushMessage flush = 3;
- CloseMessage close = 4;
- }
- }
- message PublishFollowMeResponse {
- int64 ack_ts_ns = 1;
- }
- message SubscribeMessageRequest {
- message InitMessage {
- string consumer_group = 1;
- string consumer_id = 2;
- string client_id = 3;
- Topic topic = 4;
- PartitionOffset partition_offset = 5;
- string filter = 6;
- repeated string follower_brokers = 7;
- }
- message AckMessage {
- int64 sequence = 1;
- }
- oneof message {
- InitMessage init = 1;
- AckMessage ack = 2;
- }
- }
- message SubscribeMessageResponse {
- message SubscribeCtrlMessage {
- string error = 1;
- bool is_end_of_stream = 2;
- bool is_end_of_topic = 3;
- }
- oneof message {
- SubscribeCtrlMessage ctrl = 1;
- DataMessage data = 2;
- }
- }
- message ClosePublishersRequest {
- Topic topic = 1;
- int64 unix_time_ns = 2;
- }
- message ClosePublishersResponse {
- }
- message CloseSubscribersRequest {
- Topic topic = 1;
- int64 unix_time_ns = 2;
- }
- message CloseSubscribersResponse {
- }
|