本文共 2548 字,大约阅读时间需要 8 分钟。
vim docker-compose.yml
version: '3'services: rabbitmq: image: rabbitmq:management container_name: rabbitmq restart: always hostname: myRabbitmq ports: - ${MANAGEMENT_PORT}:15672 - ${RABBITMQ_PORT}:5672 volumes: - ${RABBITMQ_DATA_FILE}:/var/lib/rabbitmq environment: - RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER} - RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
vim .env
## rabbitmq#RABBITMQ_PORT=5672MANAGEMENT_PORT=15672RABBITMQ_DATA_FILE=./dataRABBITMQ_DEFAULT_USER=rootRABBITMQ_DEFAULT_PASS=root
docker-compose up -d
go get github.com/streadway/amqp
send.go
内容如下package mainimport ( "fmt" "github.com/streadway/amqp" "log")func main() { // 连接RabbitMQ服务器 conn, err := amqp.Dial("amqp://test:test@127.0.0.1:5672//test") failOnError(err, "Failed to connect to RabbitMQ") defer conn.Close() // 创建一个channel ch, err := conn.Channel() failOnError(err, "Failed to open a channel") defer ch.Close() // 声明一个队列 q, err := ch.QueueDeclare( "test", // 队列名称 false, // 是否持久化 false, // 是否自动删除 false, // 是否独立 false, nil, ) failOnError(err, "Failed to declare a queue") // 发送消息到队列中 body := "你好" err = ch.Publish( "", // exchange q.Name, // routing key false, // mandatory false, // immediate amqp.Publishing{ ContentType: "text/plain", Body: []byte(body), }) failOnError(err, "Failed to publish a message") fmt.Println("send message success\n")}// 帮助函数检测每一个amqp调用func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) }}
receive.go
内容如下package mainimport ( "fmt" "github.com/streadway/amqp" "log")func main() { // 连接RabbitMQ服务器 conn, err := amqp.Dial("amqp://test:test@127.0.0.1:5672//test") failOnError(err, "Failed to connect to RabbitMQ") defer conn.Close() // 创建一个channel ch, err := conn.Channel() failOnError(err, "Failed to open a channel") defer ch.Close() // 声明一个队列 q, err := ch.QueueDeclare( "test", // 队列名称 false, // 是否持久化 false, // 是否自动删除 false, // 是否独立 false, nil, ) failOnError(err, "Failed to declare a queue") // 发送消息到队列中 body := "你好" err = ch.Publish( "", // exchange q.Name, // routing key false, // mandatory false, // immediate amqp.Publishing{ ContentType: "text/plain", Body: []byte(body), }) failOnError(err, "Failed to publish a message") fmt.Println("send message success\n")}// 帮助函数检测每一个amqp调用func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) }}
go build receive.go
go build send.go
转载地址:http://cyugz.baihongyu.com/