package mq import ( "fmt" "github.com/streadway/amqp" ) var mqUrl = "amqp://admin:admin@172.17.36.64:5672/" // 除了simple 模式外、其他的模式都是由 队列 交换机 key 不同组合实现的 type RabbitMQ struct { conn *amqp.Connection channel *amqp.Channel QueueName string //队列 Exchange string //交换机 Key string //key MQUrl string //连接信息 } // 创建RabbitMQ 实例 func newRabbitMQ(queueName, exchange, key string) (*RabbitMQ, error) { rabbitMQ := &RabbitMQ{ QueueName: queueName, Exchange: exchange, Key: key, MQUrl: mqUrl, } var err error // dial mq rabbitMQ.conn, err = amqp.Dial(rabbitMQ.MQUrl) if err != nil { return nil, err } rabbitMQ.channel, err = rabbitMQ.conn.Channel() if err != nil { return nil, err } _, err = rabbitMQ.channel.QueueDeclare( rabbitMQ.QueueName, true, false, false, false, nil, ) if err != nil { return nil, err } return rabbitMQ, nil } // 错误处理 func (r *RabbitMQ) failOnErr(err error, message string) { if err != nil { panic(fmt.Sprintf("%s:%s", err.Error(), message)) } }