syntax = "proto3"; package messaging_pb; import "mq_schema.proto"; option go_package = "github.com/seaweedfs/seaweedfs/weed/pb/mq_agent_pb"; option java_package = "seaweedfs.mq_agent"; option java_outer_classname = "MessageQueueAgentProto"; ////////////////////////////////////////////////// service SeaweedMessagingAgent { // Publishing rpc StartPublishSession (StartPublishSessionRequest) returns (StartPublishSessionResponse) { } rpc ClosePublishSession (ClosePublishSessionRequest) returns (ClosePublishSessionResponse) { } rpc PublishRecord (stream PublishRecordRequest) returns (stream PublishRecordResponse) { } // Subscribing rpc StartSubscribeSession (StartSubscribeSessionRequest) returns (StartSubscribeSessionResponse) { } rpc CloseSubscribeSession (CloseSubscribeSessionRequest) returns (CloseSubscribeSessionResponse) { } rpc SubscribeRecord (stream SubscribeRecordRequest) returns (stream SubscribeRecordResponse) { } } ////////////////////////////////////////////////// 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 StartPublishSessionRequest { Topic topic = 1; int32 partition_count = 2; schema_pb.RecordType record_type = 3; string publisher_name = 4; } message StartPublishSessionResponse { string error = 1; int64 session_id = 2; } message ClosePublishSessionRequest { int64 session_id = 1; } message ClosePublishSessionResponse { string error = 1; } ////////////////////////////////////////////////// message PublishRecordRequest { int64 session_id = 1; // session_id is required for the first record bytes key = 2; schema_pb.RecordValue value = 3; int64 ts_ns = 4; } message PublishRecordResponse { int64 ack_sequence = 1; string error = 2; } ////////////////////////////////////////////////// message StartSubscribeSessionRequest { string consumer_group = 1; string consumer_id = 2; string client_id = 3; Topic topic = 4; PartitionOffset partition_offset = 5; string filter = 6; int32 concurrency = 8; } message StartSubscribeSessionResponse { string error = 1; int64 session_id = 2; } message CloseSubscribeSessionRequest { int64 session_id = 1; } message CloseSubscribeSessionResponse { string error = 1; } ////////////////////////////////////////////////// message SubscribeRecordRequest { int64 session_id = 1; // session_id is required for the first record int64 ack_sequence = 2; bytes ack_key = 3; } message SubscribeRecordResponse { int64 sequence = 1; bytes key = 2; schema_pb.RecordValue value = 3; int64 ts_ns = 4; string error = 5; bool is_end_of_stream = 6; bool is_end_of_topic = 7; } //////////////////////////////////////////////////