package core import ( "fmt" "hepa-calc-api/api/amqp/consumer" "hepa-calc-api/extend/rabbitMq" "hepa-calc-api/utils" ) // StartRabbitMq 启动rabbitmq func StartRabbitMq() { err := rabbitMq.NewRabbitMQClient() if err != nil { utils.LogJsonErr("启动rabbitmq:", err.Error()) panic(err.Error()) } // 保持连接 go rabbitMq.HandleReconnect() fmt.Println("初始化rabbitMq成功......") } // StartRabbitMqConsume 启动消费者端 func StartRabbitMqConsume() { s := rabbitMq.ConsumeS{ QueueName: "user.coupon.expired.delay.queue", ExchangeName: "amqp.delay.direct", RoutingKey: "UserCouponExpired", Handler: consumer.UserCouponExpire, } // 用户优惠卷过期 go startConsumer(s) } // UserCouponExpire 用户优惠卷过期 //func userCouponExpire() { // go func() { // err := rabbitMq.Consume( // "user.coupon.expired.delay.queue", // 交换机名称 // "amqp.delay.direct", // 队列名称 // "UserCouponExpired", // 路由键 // consumer.UserCouponExpire, // 消息处理函数 // ) // if err != nil { // fmt.Println(err.Error()) // utils.LogJsonErr("消费用户优惠卷过期队列失败", err) // } // }() //} // startConsumer 启动指定的消费者协程 func startConsumer(s rabbitMq.ConsumeS) { go func() { defer func() { if r := recover(); r != nil { utils.LogJsonErr(fmt.Sprintf("消费者协程崩溃 - %s", s.QueueName), fmt.Errorf("%v", r)) // 重新启动客户端 StartRabbitMq() } }() err := s.Consume() if err != nil { fmt.Println(err.Error()) utils.LogJsonErr(fmt.Sprintf("启动消费者队列失败 - %s", s.QueueName), err) } }() }