54 lines
860 B
Go
54 lines
860 B
Go
|
package event
|
||
|
|
||
|
import (
|
||
|
"log"
|
||
|
|
||
|
amqp "github.com/rabbitmq/amqp091-go"
|
||
|
)
|
||
|
|
||
|
type Emitter struct {
|
||
|
conn *amqp.Connection
|
||
|
}
|
||
|
|
||
|
func NewEmitter(conn *amqp.Connection) (Emitter, error) {
|
||
|
emitter := Emitter{
|
||
|
conn: conn,
|
||
|
}
|
||
|
|
||
|
err := emitter.setup()
|
||
|
if err != nil {
|
||
|
return Emitter{}, err
|
||
|
}
|
||
|
return emitter, err
|
||
|
}
|
||
|
|
||
|
func (emitter *Emitter) setup() error {
|
||
|
channel, err := emitter.conn.Channel()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer channel.Close()
|
||
|
|
||
|
return declaireExchange(channel)
|
||
|
}
|
||
|
|
||
|
func (emitter *Emitter) Push(event string, severity string) error {
|
||
|
ch, err := emitter.conn.Channel()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
defer ch.Close()
|
||
|
|
||
|
log.Println("Pushing to channel")
|
||
|
|
||
|
err = ch.Publish("logs_topic", severity, false, false, amqp.Publishing{
|
||
|
ContentType: "text/plain",
|
||
|
Body: []byte(event),
|
||
|
})
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|