mirror of
https://github.com/eventials/goevents.git
synced 2025-04-24 13:48:53 +08:00

Added travis_retry to better handle test running in travis environment
goevents

Go messaging library
About
goevents
allows to dispatch events between applications.
An application produces events based on actions. Another application consume these events and maybe create new events.
Scenario: If an application produces an event "payment.received", another application may want to delivery the product to the buyer.
Supported Transport
- AMQP
How to use
The consumer
conn, err := NewConnection("amqp://guest:guest@127.0.0.1:5672/")
if err != nil {
panic(err)
}
c, err := NewConsumer(conn, false, "events-exchange", "events-queue")
if err != nil {
panic(err)
}
c.Subscribe("object.*", func(body []byte) bool {
fmt.Println(body)
return true
})
go c.Consume()
conn.WaitUntilConnectionClose()
The producer
conn, err := NewConnection("amqp://guest:guest@127.0.0.1:5672/")
if err != nil {
panic(err)
}
p, err := NewProducer(conn, "events-exchange", "events-queue")
if err != nil {
panic(err)
}
err = p.Publish("object.my_action", []byte("message"))
if err != nil {
panic(err)
}
Actions
The action can be a full word, a wildcard (*
) or multiple words or wildcards delimited by dots (.
)
Look the examples below:
- The action handler
my_action
will match onlymy_action
event. - The action handler
my_action.foo
will match onlymy_action.foo
event. - The action handler
my_action.*
will matchmy_action.foo
,my_action.bar
and allmy_action.*
events. - The action handler
my_action.foo.bar
will match onlymy_action.foo.bar
event. - The action handler
my_action.*.bar
will matchmy_action.foo.bar
,my_action.bar.bar
and allmy_action.*.bar
events. - The action handler
*
will match all events.
Description
Languages
Go
99.1%
Dockerfile
0.9%