package mq import ( "fmt" "github.com/streadway/amqp" ) var mqUrl = "amqp://admin:admin@127.0.0.1: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) rabbitMQ.failOnErr(err, "创建连接错误") if err != nil { return nil, err } // get channel rabbitMQ.channel, err = rabbitMQ.conn.Channel() 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)) } }