syntax = "proto3"; option cc_enable_arenas = true; package Ydb.Topic.V1; option go_package = "github.com/ydb-platform/ydb-go-genproto/Ydb_Topic_V1"; option java_package = "tech.ydb.topic.v1"; import "protos/ydb_topic.proto"; service TopicService { // Create Write Session // Pipeline example: // client server // InitRequest(Topic, MessageGroupID, ...) // ----------------> // InitResponse(Partition, MaxSeqNo, ...) // <---------------- // WriteRequest(data1, seqNo1) // ----------------> // WriteRequest(data2, seqNo2) // ----------------> // WriteResponse(seqNo1, offset1, ...) // <---------------- // WriteRequest(data3, seqNo3) // ----------------> // WriteResponse(seqNo2, offset2, ...) // <---------------- // [something went wrong] (status != SUCCESS, issues not empty) // <---------------- rpc StreamWrite(stream StreamWriteMessage.FromClient) returns (stream StreamWriteMessage.FromServer); // Create Read Session // Pipeline: // client server // InitRequest(Topics, ClientId, ...) // ----------------> // InitResponse(SessionId) // <---------------- // ReadRequest // ----------------> // ReadRequest // ----------------> // StartPartitionSessionRequest(Topic1, Partition1, PartitionSessionID1, ...) // <---------------- // StartPartitionSessionRequest(Topic2, Partition2, PartitionSessionID2, ...) // <---------------- // StartPartitionSessionResponse(PartitionSessionID1, ...) // client must respond with this message to actually start recieving data messages from this partition // ----------------> // StopPartitionSessionRequest(PartitionSessionID1, ...) // <---------------- // StopPartitionSessionResponse(PartitionSessionID1, ...) // only after this response server will give this parittion to other session. // ----------------> // StartPartitionSessionResponse(PartitionSession2, ...) // ----------------> // ReadResponse(data, ...) // <---------------- // CommitRequest(PartitionCommit1, ...) // ----------------> // CommitResponse(PartitionCommitAck1, ...) // <---------------- // [something went wrong] (status != SUCCESS, issues not empty) // <---------------- rpc StreamRead(stream StreamReadMessage.FromClient) returns (stream StreamReadMessage.FromServer); // Create topic command. rpc CreateTopic(CreateTopicRequest) returns (CreateTopicResponse); // Describe topic command. rpc DescribeTopic(DescribeTopicRequest) returns (DescribeTopicResponse); // Describe topic's consumer command. rpc DescribeConsumer(DescribeConsumerRequest) returns (DescribeConsumerResponse); // Alter topic command. rpc AlterTopic(AlterTopicRequest) returns (AlterTopicResponse); // Drop topic command. rpc DropTopic(DropTopicRequest) returns (DropTopicResponse); }