https://github.com/xmlking/broker
https://github.com/xmlking/broker
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/xmlking/broker
- Owner: xmlking
- License: mit
- Created: 2020-07-02T05:18:26.000Z (over 5 years ago)
- Default Branch: develop
- Last Pushed: 2023-07-05T20:57:42.000Z (over 2 years ago)
- Last Synced: 2025-01-30T05:43:17.976Z (11 months ago)
- Language: Go
- Size: 102 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Broker
Framework for building async µServices
## Usage
### Publisher
```go
package main
import (
"cloud.google.com/go/pubsub"
"github.com/google/uuid"
"github.com/rs/zerolog/log"
"github.com/xmlking/broker/pubsub"
)
func main() {
broker.DefaultBroker = broker.NewBroker()
msg := pubsub.Message{
ID: uuid.New().String(),
Data: []byte("ABC€"),
Attributes: map[string]string{"sumo": "demo"},
}
if err := broker.Publish("my-topic", &msg); err != nil {
log.Error().Err(err).Send()
}
}
```
### Subscriber
```go
package main
import (
"context"
"os"
"os/signal"
"cloud.google.com/go/pubsub"
"github.com/rs/zerolog/log"
"github.com/xmlking/broker/pubsub"
)
func main() {
broker.DefaultBroker = broker.NewBroker()
myHandler := func(ctx context.Context, msg *pubsub.Message) error {
log.Info().Interface("event.Message.ID", msg.ID).Send()
log.Info().Interface("event.Message.Attributes", msg.Attributes).Send()
log.Info().Interface("event.Message.Data", msg.Data).Send()
log.Info().Interface("event.Message", msg).Send()
msg.Ack() // or msg.Nack() // or return error for autoAck
return nil
}
err := broker.Subscribe("my-topic", myHandler, broker.Queue("my-topic-sub"))
if err != nil {
log.Error().Err(err).Msg("Failed subscribing to Topic: my-topic")
}
ch := make(chan os.Signal, 1)
signal.Notify(ch, os.Interrupt)
<-ch
log.Info().Msg("Got to Go...")
// close all subs and then connection.
if err := broker.Shutdown(); err != nil {
log.Fatal().Err(err).Msg("Unexpected disconnect error")
}
}
```