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.
128 lines
3.3 KiB
128 lines
3.3 KiB
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;
|
|
}
|
|
//////////////////////////////////////////////////
|