https://github.com/sofyan48/pubsub-router
Route your action in gcp Pubsub easy
https://github.com/sofyan48/pubsub-router
events gcp go golang mq publisher pubsub router routes subscriber
Last synced: about 2 months ago
JSON representation
Route your action in gcp Pubsub easy
- Host: GitHub
- URL: https://github.com/sofyan48/pubsub-router
- Owner: sofyan48
- Created: 2022-08-15T10:19:13.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-11-21T04:53:41.000Z (11 months ago)
- Last Synced: 2025-04-05T15:01:45.485Z (6 months ago)
- Topics: events, gcp, go, golang, mq, publisher, pubsub, router, routes, subscriber
- Language: Go
- Homepage:
- Size: 46.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Code of conduct: .github/code_of_conduct.md
Awesome Lists containing this project
README
# GCP PubSub Router
[](https://github.com/sofyan48/pubsub-router/actions/workflows/docker-image.yml)
---
Route your action in gcp Pubsub easy## Installing
```
go get github.com/sofyan48/pubsub-router
```### Setup Client
``` Golang
package mainimport (
"context"
"fmt"
"os""cloud.google.com/go/pubsub"
"github.com/joho/godotenv"
pubsubrouter "github.com/sofyan48/pubsub-router"
)func main() {
err := godotenv.Load()
if err != nil {
fmt.Println("error: ", err)
}
cfg := &pubsubrouter.Config{
Type: "service_account",
ProjectID: os.Getenv("GOOGLE_PROJECT_ID"),
PrivateKeyID: os.Getenv("GOOGLE_PRIVATE_KEY_ID"),
PrivateKey: os.Getenv("GOOGLE_PRIVATE_KEY"),
ClientEmail: os.Getenv("GOOGLE_CLIENT_EMAIL"),
ClientID: os.Getenv("GOOGLE_CLIENT_ID"),
AuthURI: os.Getenv("GOOGLE_AUTH_URI"),
TokenURI: os.Getenv("GOOGLE_TOKEN_URI"),
AuthProviderX509CertURL: os.Getenv("GOOGLE_AUTH_PROVIDER"),
ClientX509CertURL: os.Getenv("GOOGLE_CLIENT_CERT_URL"),
}
sv := pubsubrouter.NewServer(context.Background(), cfg)
}```
### Setup Handler
``` Golangfunc handlerMessage() HandlerFunc {
return func(m *pubsubrouter.Message) error error {
fmt.Println("FROM EVENT:> ", string(m.Data))
return nil
}
}func handlerMessage2() HandlerFunc {
return func(m *pubsubrouter.Message) error {
fmt.Println("FROM TEST:> ", string(m.Data))
return nil
}
}
```### Setup Router and Handler
``` Golang
// add router
rtr := pubsubrouter.NewRouter()
// setup routing and handler
rtr.Handle("/event", handlerMessage())
rtr.Handle("/test", handlerMessage2())```
### Starting Subscriber
``` Golang
sv.Subscribe(os.Getenv("EVENT_BROKER_SERIAL"), rtr).Start()
```
### Starting Publisher
Send event with attribute path
``` Golang
sv.Publish(os.Getenv("EVENT_BROKER_SERIAL"), "/test", "Message send test")
```## Example
For best model example check example folder```
go run example/main.go
```