github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/topic/example_test.go (about)

     1  package topic_test
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"io"
     7  	"log"
     8  	"os"
     9  
    10  	ydb "github.com/ydb-platform/ydb-go-sdk/v3"
    11  	"github.com/ydb-platform/ydb-go-sdk/v3/topic/topicoptions"
    12  	"github.com/ydb-platform/ydb-go-sdk/v3/topic/topictypes"
    13  )
    14  
    15  func Example_createTopic() {
    16  	ctx := context.TODO()
    17  	connectionString := os.Getenv("YDB_CONNECTION_STRING")
    18  	if connectionString == "" {
    19  		connectionString = "grpc://localhost:2136/local"
    20  	}
    21  	db, err := ydb.Open(ctx, connectionString)
    22  	if err != nil {
    23  		log.Printf("failed connect: %v", err)
    24  
    25  		return
    26  	}
    27  	defer db.Close(ctx) // cleanup resources
    28  
    29  	err = db.Topic().Create(ctx, "topic-path",
    30  
    31  		// optional
    32  		topicoptions.CreateWithSupportedCodecs(topictypes.CodecRaw, topictypes.CodecGzip),
    33  
    34  		// optional
    35  		topicoptions.CreateWithMinActivePartitions(3),
    36  	)
    37  	if err != nil {
    38  		log.Printf("failed create topic: %v", err)
    39  
    40  		return
    41  	}
    42  }
    43  
    44  func Example_alterTopic() {
    45  	ctx := context.TODO()
    46  	connectionString := os.Getenv("YDB_CONNECTION_STRING")
    47  	if connectionString == "" {
    48  		connectionString = "grpc://localhost:2136/local"
    49  	}
    50  	db, err := ydb.Open(ctx, connectionString)
    51  	if err != nil {
    52  		log.Printf("failed connect: %v", err)
    53  
    54  		return
    55  	}
    56  	defer db.Close(ctx) // cleanup resources
    57  
    58  	err = db.Topic().Alter(ctx, "topic-path",
    59  		topicoptions.AlterWithAddConsumers(topictypes.Consumer{
    60  			Name:            "new-consumer",
    61  			SupportedCodecs: []topictypes.Codec{topictypes.CodecRaw, topictypes.CodecGzip}, // optional
    62  		}),
    63  	)
    64  	if err != nil {
    65  		log.Printf("failed alter topic: %v", err)
    66  
    67  		return
    68  	}
    69  }
    70  
    71  func Example_describeTopic() {
    72  	ctx := context.TODO()
    73  	connectionString := os.Getenv("YDB_CONNECTION_STRING")
    74  	if connectionString == "" {
    75  		connectionString = "grpc://localhost:2136/local"
    76  	}
    77  	db, err := ydb.Open(ctx, connectionString)
    78  	if err != nil {
    79  		log.Printf("failed connect: %v", err)
    80  
    81  		return
    82  	}
    83  	defer db.Close(ctx) // cleanup resources
    84  
    85  	descResult, err := db.Topic().Describe(ctx, "topic-path")
    86  	if err != nil {
    87  		log.Printf("failed describe topic: %v", err)
    88  
    89  		return
    90  	}
    91  	fmt.Printf("describe: %#v\n", descResult)
    92  }
    93  
    94  func Example_desrcibeTopicConsumer() {
    95  	ctx := context.TODO()
    96  	connectionString := os.Getenv("YDB_CONNECTION_STRING")
    97  	if connectionString == "" {
    98  		connectionString = "grpc://localhost:2136/local"
    99  	}
   100  	db, err := ydb.Open(
   101  		ctx, connectionString,
   102  	)
   103  	if err != nil {
   104  		log.Printf("failed connect: %v", err)
   105  
   106  		return
   107  	}
   108  	defer db.Close(ctx) // cleanup resources
   109  
   110  	descResult, err := db.Topic().DescribeTopicConsumer(ctx, "topic-path", "new-consumer")
   111  	if err != nil {
   112  		log.Printf("failed describe topic consumer: %v", err)
   113  
   114  		return
   115  	}
   116  	fmt.Printf("describe consumer: %#v\n", descResult)
   117  }
   118  
   119  func Example_dropTopic() {
   120  	ctx := context.TODO()
   121  	connectionString := os.Getenv("YDB_CONNECTION_STRING")
   122  	if connectionString == "" {
   123  		connectionString = "grpc://localhost:2136/local"
   124  	}
   125  	db, err := ydb.Open(ctx, connectionString)
   126  	if err != nil {
   127  		log.Printf("failed connect: %v", err)
   128  
   129  		return
   130  	}
   131  	defer db.Close(ctx) // cleanup resources
   132  
   133  	err = db.Topic().Drop(ctx, "topic-path")
   134  	if err != nil {
   135  		log.Printf("failed drop topic: %v", err)
   136  
   137  		return
   138  	}
   139  }
   140  
   141  func Example_readMessage() {
   142  	ctx := context.TODO()
   143  	connectionString := os.Getenv("YDB_CONNECTION_STRING")
   144  	if connectionString == "" {
   145  		connectionString = "grpc://localhost:2136/local"
   146  	}
   147  	db, err := ydb.Open(ctx, connectionString)
   148  	if err != nil {
   149  		log.Printf("failed connect: %v", err)
   150  
   151  		return
   152  	}
   153  	defer db.Close(ctx) // cleanup resources
   154  
   155  	reader, err := db.Topic().StartReader("consumer", topicoptions.ReadTopic("/topic/path"))
   156  	if err != nil {
   157  		fmt.Printf("failed start reader: %v", err)
   158  
   159  		return
   160  	}
   161  
   162  	for {
   163  		mess, err := reader.ReadMessage(ctx)
   164  		if err != nil {
   165  			fmt.Printf("failed start reader: %v", err)
   166  
   167  			return
   168  		}
   169  
   170  		content, err := io.ReadAll(mess)
   171  		if err != nil {
   172  			fmt.Printf("failed start reader: %v", err)
   173  
   174  			return
   175  		}
   176  		fmt.Println(string(content))
   177  	}
   178  }