初始化
~~~
package RabbitMQ
import (
"fmt"
"github.com/streadway/amqp"
"log"
)
// url 格式 amqp://賬戶:秘密@rabbitmq服務器地址:端口號/host
const MQURL = "amqp://guest:guest@127.0.0.1:5672/"
type RabbitMQ struct {
conn *amqp.Connection
channel *amqp.Channel
// 隊列名稱
QueueName string
// 交換機
Exchange string
// key
Key string
// 連接信息
Mqurl string
}
// 創建RabbitMQ結構體實例
func NewRabbitMQ(queueName,exchange,key string) *RabbitMQ {
mq := &RabbitMQ{
QueueName: queueName,
Exchange: exchange,
Key: key,
Mqurl: MQURL,
}
connection, e := amqp.Dial(mq.Mqurl)
mq.failOnErr(e,"創建連接失敗")
channel, e := connection.Channel()
mq.failOnErr(e,"獲取channel失敗")
mq.conn = connection
mq.channel = channel
return mq
}
// 斷開channel和connection
func (r *RabbitMQ) Destroy() {
r.channel.Close()
r.conn.Close()
}
// 錯誤處理函數
func (r *RabbitMQ) failOnErr (err error,message string) {
if err != nil {
log.Fatal("%s:%s",message,err)
panic(fmt.Sprintf("%s:%s",message,err))
}
}
~~~