An experimental pub/sub client and server project.
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 5143e7397c716872cfe055a7cd59e8b848a96687 63 lines 1.1 kB view raw
1package main 2 3import ( 4 "context" 5 "fmt" 6 "log/slog" 7 8 "github.com/willdot/messagebroker" 9 "github.com/willdot/messagebroker/pubsub" 10 "github.com/willdot/messagebroker/server" 11) 12 13func main() { 14 server, err := server.New(context.Background(), ":3000") 15 if err != nil { 16 panic(err) 17 } 18 defer server.Shutdown() 19 20 go sendMessages() 21 22 sub, err := pubsub.NewSubscriber(":3000") 23 if err != nil { 24 panic(err) 25 } 26 defer sub.Close() 27 28 sub.SubscribeToTopics([]string{"topic a"}) 29 30 consumer := sub.Consume(context.Background()) 31 if consumer.Err != nil { 32 panic(err) 33 } 34 35 for msg := range consumer.Messages() { 36 slog.Info("received message", "message", string(msg.Data)) 37 } 38 39} 40 41func sendMessages() { 42 publisher, err := pubsub.NewPublisher("localhost:3000") 43 if err != nil { 44 panic(err) 45 } 46 defer publisher.Close() 47 48 // send some messages 49 i := 0 50 for { 51 i++ 52 msg := messagebroker.Message{ 53 Topic: "topic a", 54 Data: []byte(fmt.Sprintf("message %d", i)), 55 } 56 57 err = publisher.PublishMessage(msg) 58 if err != nil { 59 slog.Error("failed to publish message", "error", err) 60 continue 61 } 62 } 63}