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