docker快速安裝rabbitmq的方法步驟
一、獲取鏡像
#指定版本,該版本包含了web控制頁面 docker pull rabbitmq:management
二、運行鏡像
#方式一:默認guest 用戶,密碼也是 guest docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management #方式二:設(shè)置用戶名和密碼 docker run -d --hostname my-rabbit --name rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 15672:15672 -p 5672:5672 rabbitmq:management
三、訪問ui頁面
http://localhost:15672/
四、golang案例
#producer生產(chǎn)者代碼 package main import ( "fmt" "log" "github.com/streadway/amqp" ) const ( //AMQP URI uri = "amqp://guest:guest@10.0.0.11:5672/" // 10.0.0.11為主機ip //Durable AMQP exchange name exchangeName = "" //Durable AMQP queue name queueName = "test-queues" //Body of message bodyMsg string = "hello angel" ) //如果存在錯誤,則輸出 func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) panic(fmt.Sprintf("%s: %s", msg, err)) } } func main() { //調(diào)用發(fā)布消息函數(shù) publish(uri, exchangeName, queueName, bodyMsg) log.Printf("published %dB OK", len(bodyMsg)) } //發(fā)布者的方法 //@amqpURI, amqp的地址 //@exchange, exchange的名稱 //@queue, queue的名稱 //@body, 主體內(nèi)容 func publish(amqpURI string, exchange string, queue string, body string) { //建立連接 log.Printf("dialing %q", amqpURI) connection, err := amqp.Dial(amqpURI) failOnError(err, "Failed to connect to RabbitMQ") defer connection.Close() //創(chuàng)建一個Channel log.Printf("got Connection, getting Channel") channel, err := connection.Channel() failOnError(err, "Failed to open a channel") defer channel.Close() log.Printf("got queue, declaring %q", queue) //創(chuàng)建一個queue q, err := channel.QueueDeclare( queueName, // name false, // durable false, // delete when unused false, // exclusive false, // no-wait nil, // arguments ) failOnError(err, "Failed to declare a queue") log.Printf("declared queue, publishing %dB body (%q)", len(body), body) // Producer只能發(fā)送到exchange,它是不能直接發(fā)送到queue的 // 現(xiàn)在我們使用默認的exchange(名字是空字符)這個默認的exchange允許我們發(fā)送給指定的queue // routing_key就是指定的queue名字 err = channel.Publish( exchange, // exchange q.Name, // routing key false, // mandatory false, // immediate amqp.Publishing{ Headers: amqp.Table{}, ContentType: "text/plain", ContentEncoding: "", Body: []byte(body), }) failOnError(err, "Failed to publish a message") }
五、擁有消息確認的代碼
#producer package main import ( "fmt" "github.com/streadway/amqp" "log" "os" "strings" ) const ( //AMQP URI uri = "amqp://guest:guest@10.0.0.11:5672/" //Durable AMQP exchange name exchangeName = "" //Durable AMQP queue name queueName = "test-queues-acknowledgments" ) //如果存在錯誤,則輸出 func failOnError(err error, msg string) { if err != nil { log.Fatalf("%s: %s", msg, err) panic(fmt.Sprintf("%s: %s", msg, err)) } } func main() { bodyMsg := bodyFrom(os.Args) //調(diào)用發(fā)布消息函數(shù) publish(uri, exchangeName, queueName, bodyMsg) log.Printf("published %dB OK", len(bodyMsg)) } func bodyFrom(args []string) string { var s string if (len(args) < 2) || os.Args[1] == "" { s = "hello angel" } else { s = strings.Join(args[1:], " ") } return s } //發(fā)布者的方法 //@amqpURI, amqp的地址 //@exchange, exchange的名稱 //@queue, queue的名稱 //@body, 主體內(nèi)容 func publish(amqpURI string, exchange string, queue string, body string) { //建立連接 log.Printf("dialing %q", amqpURI) connection, err := amqp.Dial(amqpURI) failOnError(err, "Failed to connect to RabbitMQ") defer connection.Close() //創(chuàng)建一個Channel log.Printf("got Connection, getting Channel") channel, err := connection.Channel() failOnError(err, "Failed to open a channel") defer channel.Close() log.Printf("got queue, declaring %q", queue) //創(chuàng)建一個queue q, err := channel.QueueDeclare( queueName, // name false, // durable false, // delete when unused false, // exclusive false, // no-wait nil, // arguments ) failOnError(err, "Failed to declare a queue") log.Printf("declared queue, publishing %dB body (%q)", len(body), body) // Producer只能發(fā)送到exchange,它是不能直接發(fā)送到queue的。 // 現(xiàn)在我們使用默認的exchange(名字是空字符)。這個默認的exchange允許我們發(fā)送給指定的queue。 // routing_key就是指定的queue名字。 err = channel.Publish( exchange, // exchange q.Name, // routing key false, // mandatory false, // immediate amqp.Publishing{ Headers: amqp.Table{}, ContentType: "text/plain", ContentEncoding: "", Body: []byte(body), }) failOnError(err, "Failed to publish a message") }
到此這篇關(guān)于docker快速安裝rabbitmq的方法步驟的文章就介紹到這了,更多相關(guān)docker安裝rabbitmq內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解如何使用Docker快速部署ELK環(huán)境(最新5.5.1版本)
這篇文章主要介紹了詳解如何使用Docker快速部署ELK環(huán)境(最新5.5.1版本),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08基于Docker+Jenkins實現(xiàn)自動化部署的方法
這篇文章主要介紹了基于Docker+Jenkins實現(xiàn)自動化部署,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07docker中Dockerfile方式建立鏡像HelloWorld
這篇文章主要介紹了docker中Dockerfile方式建立鏡像HelloWorld,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07Springboot使用docker-compose實現(xiàn)動態(tài)配置過程
這篇文章主要介紹了Springboot使用docker-compose實現(xiàn)動態(tài)配置全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Docker compose部署SpringBoot項目連接MySQL及遇到的坑
這篇文章主要介紹了Docker compose部署SpringBoot項目連接MySQL,文中給大家強調(diào)了如果在使用的過程中修改了Dockerfile,一定要把之前的鏡像刪掉,具體內(nèi)容詳情跟隨小編一起看看吧2021-09-09docker compose 一鍵部署分布式配置中心Apollo的過程詳解
這篇文章主要介紹了docker compose 一鍵部署分布式配置中心Apollo,今天我們使用Docker來進行搭建,畢竟Docker對于開發(fā)者來說更友好一些,需要的朋友可以參考下2021-09-09Docker Desktop安裝本地Kubernetes集群的實現(xiàn)
Kubernetes用于協(xié)調(diào)高度可用的計算機集群,本文主要介紹了Docker Desktop安裝本地Kubernetes集群的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-02-02