package mq import ( common3 "qteam/app/constants/common" mq "qteam/app/utils/mq/mqs" "sync" ) var ( MqManager = CMqManager{} once sync.Once ) type Imq interface { Produce(name string, log interface{}, delayTime int, args ...interface{}) error Consume(name string, hand interface{}) DelyConsume(name string, hand interface{}) } type CMqManager struct { mqs map[string]Imq } func (this *CMqManager) InitMq() { this.mqs = make(map[string]Imq) //this.mqs[common.MQ_RABBIT] = RabbitMq{} //this.mqs[common.MQ_NSQ] = NsqMq{} this.mqs[common3.MQ_NATS] = mq.NatsMq{} this.mqs[common3.MQ_KFK] = mq.KafkaMq{} } func (this *CMqManager) GetMqByName(name string) Imq { once.Do(func() { this.InitMq() }) return this.mqs[name] }