Provide pubsub server and simple stats monitoring, available both by REST API.
You can select the background datastore of pubsub server one out of in the in-memory, mysql and redis.
If you need pubsub client library, import client packages. Currently available client library is Go only.
go get -u github.com/takashabe/go-pubsub/cmd/pubsub
make build # need once at first
cmd/pubsub/pubsub
Options:
- file: Config file. require anything config file. (default "config/app.yaml")
- port: Running port. require unused port. (default 8080)
Syntax based on the YAML, require datastore element and it configration parameters. If empty the parameters of datastore, used in-memory datastore.
Examples:
# MySQL
datastore:
mysql:
addr: "localhost:3306"
user: pubsub
password: ""
# Redis
datastore:
redis:
addr: "localhost:6379"
db: 0
# In-memory
datasotre:
| Component | Features |
|---|---|
| Publisher | * Message push to Topic |
| Topic | * Recieve publish Message * Save Message to datastor * Transport Message to Subscription |
| Datastore | * Save and mutex Message * Selectable backend storage |
| Subscription | * Recieve Subscriber pull request * Push Message to Subscriber |
| Subscriber | * Register some Subscription * Pull message from Subscription * Receive push Message from Subscription * Return ack response to Subscription |
When do not specify created component(topic, subscription), Default component used.
- Publish Message
- Pull Message
- Subscriber return ack response
- Create Topic
- Create Subscription (optional: specify push endpoint)
- Publish Message to specific Topic
- Push or Pull Message from specific Subscription
- Subscriber retrun ack response
| Method | URL | Behavior |
|---|---|---|
| create | PUT: /topic/{name} |
create topic |
| delete | DELETE: /topic/{name} |
delete topic |
| get | GET: /topic/{name} |
get topic detail |
| list | GET: /topic/ |
get topic list |
| list subscriptions | GET: /topic/{name}/subscriptions |
get toipc depends subscriptions |
| publish | POST: /topic/{name}/publish |
create message save message to backend storage and deliver message to depends subscription |
| Method | URL | Behavior |
|---|---|---|
| ack | POST: /subscription/{name}/ack |
return ack response when receive ack from all depended Subscriptions, delete message. |
| create | PUT: /subscription/{name} |
create subscription |
| delete | DELETE: /subscription/{name} |
delete subscription |
| get | GET: /subscription/{name} |
get subscription detail |
| pull | POST: /subscription/{name}/pull |
get message |
| modify ack config | POST: /subscription/{name}/ack/modify |
modify ack timeout |
| modify push config | POST: /subscription/{name}/push/modify |
modify push config |
| list | GET: /subscription/ |
get subscripction list |
| Method | URL | Behavior |
|---|---|---|
| summary | GET: /stats |
pubsub metrics summary |
| topic summary | GET: /stats/topic |
topic metrics summary |
| topic detail | GET: /stats/topic/{name} |
topic metrics detail |
| subscription summary | GET: /stats/subscription |
subscription metrics summary |
| subscription detail | GET: /stats/subscription/{name} |
subscription metrics detail |
- gRPC interface
- improve stats items
- authenticate