- Add Forgejo CI workflow: gofmt checks, module caching, coverage reporting - Add release workflow: auto-tag-triggered release with changelog extraction - Update module paths from rock/ to homelab/ namespace - Enhance test coverage and documentation (PLAN.md, README.md) Co-Authored-By: Claude Haiku 4.5 <[email protected]>
60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
// 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/homelab/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")
|
|
}
|