You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							232 lines
						
					
					
						
							5.6 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							232 lines
						
					
					
						
							5.6 KiB
						
					
					
				| 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 = "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 Publish (stream PublishRequest) returns (stream PublishResponse) { | |
|     } | |
|     rpc Subscribe (SubscribeRequest) returns (stream SubscribeResponse) { | |
|     } | |
| } | |
|  | |
| ////////////////////////////////////////////////// | |
|  | |
| 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 BrokerStats { | |
|     int32 cpu_usage_percent = 1; | |
|     map<string, TopicPartitionStats> stats = 2; | |
| } | |
| message TopicPartitionStats { | |
|     Topic topic = 1; | |
|     Partition partition = 2; | |
|     int32 consumer_count = 3; | |
|     bool is_leader = 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; | |
| } | |
| message ConfigureTopicResponse { | |
|     repeated BrokerPartitionAssignment broker_partition_assignments = 2; | |
| } | |
| message ListTopicsRequest { | |
| } | |
| message ListTopicsResponse { | |
|     repeated Topic topics = 1; | |
| } | |
| message LookupTopicBrokersRequest { | |
|     Topic topic = 1; | |
|     bool is_for_publish = 2; | |
| } | |
| 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_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 AssignedPartition { | |
|         Partition partition = 1; | |
|         int64 ts_ns = 2; | |
|     } | |
|     message Assignment { | |
|         int64 generation = 1; | |
|         repeated AssignedPartition assigned_partitions = 2; | |
|     } | |
|     oneof message { | |
|         Assignment assignment = 1; | |
|     } | |
| } | |
|  | |
| ////////////////////////////////////////////////// | |
| message DataMessage { | |
|     bytes key = 1; | |
|     bytes value = 2; | |
|     int64 ts_ns = 3; | |
| } | |
| message PublishRequest { | |
|     message InitMessage { | |
|         Topic topic = 1; | |
|         Partition partition = 2; | |
|         int32 ack_interval = 3; | |
|     } | |
|     oneof message { | |
|         InitMessage init = 1; | |
|         DataMessage data = 2; | |
|     } | |
|     int64 sequence = 3; | |
| } | |
| message PublishResponse { | |
|     int64 ack_sequence = 1; | |
|     string error = 2; | |
|     bool should_close = 3; | |
| } | |
| message SubscribeRequest { | |
|     message InitMessage { | |
|         string consumer_group = 1; | |
|         string consumer_id = 2; | |
|         string client_id = 3; | |
|         Topic topic = 4; | |
|         Partition partition = 5; | |
|         oneof offset { | |
|             int64 start_offset = 6; | |
|             int64 start_timestamp_ns = 7; | |
|         } | |
|         string filter = 8; | |
|     } | |
|     message AckMessage { | |
|         int64 sequence = 1; | |
|     } | |
|     oneof message { | |
|         InitMessage init = 1; | |
|         AckMessage ack = 2; | |
|     } | |
| } | |
| message SubscribeResponse { | |
|     message CtrlMessage { | |
|         string error = 1; | |
|         bool is_end_of_stream = 2; | |
|         bool is_end_of_topic = 3; | |
|     } | |
|     oneof message { | |
|         CtrlMessage 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 { | |
| }
 |