feat: initial kmsvc-sdk Go client for kafkamgmt.v1 message-plane API
Client/auth/message-plane methods/long-poll/typed errors, all tested against an in-process bufconn fake. Consumes [email protected] via go get (GOPRIVATE), no submodule or local codegen.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
// Command sendreceive is a manual smoke test: send a message, receive it,
|
||||
// then delete it. Requires a running kafaka_management_service instance.
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"log"
|
||||
"time"
|
||||
|
||||
kmsvc "forgejo.riotpiao.homelab.com/rock/kmsvc-sdk"
|
||||
)
|
||||
|
||||
func main() {
|
||||
target := flag.String("target", "localhost:8443", "kmsvc gRPC address")
|
||||
queue := flag.String("queue", "demo", "queue name")
|
||||
token := flag.String("token", "", "bearer token")
|
||||
flag.Parse()
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
||||
defer cancel()
|
||||
|
||||
var opts []kmsvc.Option
|
||||
if *token != "" {
|
||||
opts = append(opts, kmsvc.WithTokenSource(kmsvc.StaticToken(*token)))
|
||||
}
|
||||
|
||||
client, err := kmsvc.New(ctx, *target, opts...)
|
||||
if err != nil {
|
||||
log.Fatalf("kmsvc.New: %v", err)
|
||||
}
|
||||
defer client.Close()
|
||||
|
||||
sendOut, err := client.SendMessage(ctx, kmsvc.SendMessageInput{
|
||||
QueueName: *queue,
|
||||
Body: []byte("hello from kmsvc-sdk"),
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("SendMessage: %v", err)
|
||||
}
|
||||
log.Printf("sent message_id=%s", sendOut.MessageID)
|
||||
|
||||
msgs, err := client.ReceiveMessage(ctx, *queue, kmsvc.ReceiveOptions{
|
||||
MaxNumberOfMessages: 1,
|
||||
WaitTimeSeconds: 10,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("ReceiveMessage: %v", err)
|
||||
}
|
||||
if len(msgs) == 0 {
|
||||
log.Fatal("no messages received within wait window")
|
||||
}
|
||||
log.Printf("received message_id=%s body=%q", msgs[0].MessageID, msgs[0].Body)
|
||||
|
||||
if err := client.DeleteMessage(ctx, *queue, msgs[0].ReceiptHandle); err != nil {
|
||||
log.Fatalf("DeleteMessage: %v", err)
|
||||
}
|
||||
log.Println("deleted message")
|
||||
}
|
||||
Reference in New Issue
Block a user