package main import ( "encoding/json" "fmt" rabbitmq "github.com/wagslane/go-rabbitmq" ) var msgConsumer *rabbitmq.Consumer type KzMessage struct { AccountId string `json:"Account-ID"` AppName string `json:"App-Name"` AppVersion string `json:"App-Version"` CallId string `json:"Call-ID"` EventCategory string `json:"Event-Category"` EventName string `json:"Event-Name"` MsgId string `json:"Msg-ID"` Node string `json:"Node"` ServerId string `json:"Server-ID"` Description string `json:"Msg-Description"` To string `json:"To"` Payload map[string]interface{} `json:"Payload"` } func handleAmqpMsg(d rabbitmq.Delivery) rabbitmq.Action { // rabbitmq.Ack, rabbitmq.NackDiscard, rabbitmq.NackRequeue logit(7, "AMQP message received: "+string(d.Body)) if appconf.FilterEvtCat == "*" && appconf.FilterEvtName == "*" && appconf.FilterEvtAppName == "*" { fmt.Println(string(d.Body)) return rabbitmq.Ack } var msg KzMessage err := json.Unmarshal(d.Body, &msg) if err != nil { logit(5, "handleAmqpMsg(): Error unmarshalling AMQP message into map[string]interface{}...discarding. Message body: "+string(d.Body)+"\nUnmarshalling error: "+err.Error()) return rabbitmq.NackDiscard } for _, appname := range msgAppNameFilters { if appconf.FilterEvtAppName == "*" || appname == msg.AppName { //only print messges that match a filter, or any if the filter is "*" for _, cat := range msgCatFilters { if appconf.FilterEvtCat == "*" || cat == msg.EventCategory { for _, name := range msgNameFilters { if appconf.FilterEvtName == "*" || name == msg.EventName { if appconf.LogLevel > 4 { fmt.Println("RoutingKey: ", string(d.RoutingKey)) } fmt.Println(string(d.Body)) } } } } } } return rabbitmq.Ack }