package main import ( "flag" _ "fmt" _ "github.com/ichunt2019/go-msgserver/utils/rabbitmq" "github.com/ichunt2019/go-rabbitmq/utils/rabbitmq" "github.com/ichunt2019/logger" "go-queue-server/dal/db" "go-queue-server/order/sendPurchaseEmail/sendEmail" "go-queue-server/util" _ "sync" _ "time" ) type RecvPro struct { } //// 实现消费者 消费消息失败 自动进入延时尝试 尝试3次之后入库db func (t *RecvPro) Consumer(dataByte []byte) error { logger.Info(string(dataByte)) err := sendEmail.SendPurchaseEmail(string(dataByte)) ////return errors.New("顶顶顶顶") return err } //消息已经消费3次 失败了 请进行处理 func (t *RecvPro) FailAction(dataByte []byte) error { logger.Error("任务处理失败了,我要进入db日志库了") logger.Error("任务处理失败了,发送钉钉消息通知主人") logger.Error(string(dataByte)) return nil } func initDb(dns string) (err error) { err = db.Init(dns) if err != nil { return } return } var ConfigDir string var LogDir string // 解析命令行参数 func initArgs() { // worker -config ./worker.json // worker -h flag.StringVar(&ConfigDir, "configDir", "", "配置文件") flag.StringVar(&LogDir, "logDir", "", "日志目录") flag.Parse() } func main() { initArgs() //初始化配置文件 util.Init(ConfigDir) // logConfig := make(map[string]string) logConfig["log_path"] = LogDir+"order/orderSendPurchaseEmail" logConfig["log_chan_size"] = "1000" logger.InitLogger("file",logConfig) logger.Init() //初始化db initDb(util.Configs.Liexin_databases.Dns) t := &RecvPro{} //queueExchange := &rabbitmq.QueueExchange{ // util.Configs.Rabbitmq_ichunt.QueueName, // util.Configs.Rabbitmq_ichunt.RoutingKey, // util.Configs.Rabbitmq_ichunt.Exchange, // util.Configs.Rabbitmq_ichunt.Type, // util.Configs.Rabbitmq_ichunt.Dns, //} //for i:=0;i<= 100;i++{ // logger.Debug("Debug记录日志555555555555555555555555555555") // logger.Trace("Trace记录日志555555555555555555555555555555") // logger.Info("Info记录日志555555555555555555555555555555") // logger.Warn("Warn记录日志555555555555555555555555555555") // logger.Error("Error记录日志555555555555555555555555555555") // logger.Fatal("Fatal记录日志555555555555555555555555555555") //} //for{ // var wg sync.WaitGroup // fmt.Println("开始执行任务....") // for i := 0;i<3;i++{ // wg.Add(1) // go func(wg *sync.WaitGroup){ // mq := rabbitmq.New(queueExchange) // mq.RegisterReceiver(t) // err :=mq.Start() // if err != nil{ // // fmt.Println(err) // } // wg.Done() // }(&wg) // } // wg.Wait() // fmt.Println("执行任务完成....") // time.Sleep(time.Microsecond*10) //} /* {"data":[{"orderNum":"ZTY-HK202004150001","goods":"RC0402JR-070RL","purchasingPrice":"0.001300","unitPrice":"0.001300","brand":"Yageo","nums":"10472","currency":"\u7f8e\u5143","totalPrice":"13.61","remarks":"xxx","material":"E6nwafP+T1+NIcwhjrlPh4iIKlg=","purchasing":"\u5e73\u53f0","projectId":1,"deliveryTime":"v001","send_email":"pingtai@ichunt.com"}],"toUser":["pingtai@ichunt.com"],"ccUser":["zgj@ichunt.com","admin@ichunt.com","long@ichunt.com","zjl@ichunt.com"],"combined":"13.61","order_amount":"13.61","date":"2020-04-17","kefu_remark":"","id":"\u5f20\u5a77\u7389","order_id":3644,"operator_id":1000,"operator_event":"\u53d1\u9001\u90ae\u4ef6\u6210\u529f\uff0c\u6536\u4ef6\u4eba\u90ae\u7bb1\uff1a[\"pingtai@ichunt.com\"]\uff0c\u6284\u9001\u4eba\u90ae\u7bb1\uff1a[\"zgj@ichunt.com\",\"admin@ichunt.com\",\"long@ichunt.com\",\"zjl@ichunt.com\"]"} */ rabbitmq.Recv(rabbitmq.QueueExchange{ util.Configs.Rabbitmq_ichunt.QueueName, util.Configs.Rabbitmq_ichunt.RoutingKey, util.Configs.Rabbitmq_ichunt.Exchange, util.Configs.Rabbitmq_ichunt.Type, util.Configs.Rabbitmq_ichunt.Dns, },t,3) }