消息队列--RabbitMQ简单使用
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                消息队列--RabbitMQ简单使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                安裝使用
- 地址:http://www.rabbitmq.com/
- 需要根據不同的版本選擇不同的erlang
安裝erlang
安裝RabbitMQ首先需要安裝erlang環境,根據GitHub上erlang中README配置yum源
將上面的內容寫入紅線標注的文件中保存退出,然后安裝erlang
yum update -y yum install -y erlang-23.3.4安裝RabbitMQ
下載完成RabbitMQ的安裝包后執行下面的命令安裝
yum install rabbitmq-server-3.8.19-1.el7.noarch.rpm安裝完成后可以看到有6個相關的可執行程序
其中核心是rabbitmq-server
RabbitMQ的使用
啟動
rabbitmq-server start & # 后臺啟動啟動RabbitMQ圖形化管理界面
RabbitMQ的圖形化管理界面模式是沒有打開的,需要我們手動去打開,rabbitmq-plugins就是管理各種插件的工具
rabbitmq-plugins list # 查看所有插件 rabbitmq-plugins enable rabbitmq_management # 打開圖形化界面 rabbitmq-plugins disable rabbitmq_management # 關閉圖形化界面訪問圖形化管理界面
打開圖形化管理界面插件后就可以通過本機瀏覽器訪問RabbitMQ了:http://127.0.0.1:15672/ 用戶名和密碼都是guest
如果要在其他機器上訪問該界面則需要配置用戶名和密碼,權限等
rabbitmqctl add_user Guest Guest # 添加用戶 rabbitmqctl set_user_tags Guest administrator # 賦予該用戶管理員角色 rabbitmqctl set_permissions -p / Guest ".*" ".*" ".*" # 給該用戶賦予權限這樣就可以在其他機器上訪問RabbitMQ的管理界面了
下面通過Go語言實現一個簡單的消息隊列的應用
consumer.go
package mainimport ("fmt""github.com/streadway/amqp" )//消費者func main() {//1.建立連接connection, err := amqp.Dial("amqp://Guest:Guest@192.168.27.139:5672")if err != nil {panic(err)}defer connection.Close()//2.設置通道ch, err := connection.Channel()if err != nil {panic(err)}//3.定義exchange//err = ch.ExchangeDeclare("exchange-name", "direct", false, false, false, false, nil)err = ch.ExchangeDeclare("exchange-name-topic", "topic", false, false, false, false, nil)if err != nil {panic(err)}//4.定義隊列 queuequeue, err := ch.QueueDeclare("", false, false,false,false, nil)if err != nil {panic(err)}//5.綁定 bind//err = ch.QueueBind(queue.Name, "direct_key", "exchange-name", false, nil)//topic 模糊匹配err = ch.QueueBind(queue.Name, "topic.#", "exchange-name-topic", false, nil)if err != nil {panic(err)}//6.接收消息consume_msg, err := ch.Consume(queue.Name, "", false, false, false, false, nil)if err != nil {panic(err)}//7.打印消息//msg := <-consume_msg//fmt.Printf("received msg: %s\n", msg.Body)for msg := range consume_msg {fmt.Printf("received msg: %s\n", msg.Body)} }producer.go
package mainimport "github.com/streadway/amqp"//生產者func main() {//1.建立連接connection, err := amqp.Dial("amqp://Guest:Guest@192.168.27.139:5672")if err != nil {panic(err)}defer connection.Close()//2.設置通道ch, err := connection.Channel()if err != nil {panic(err)}//3.定義exchange//err = ch.ExchangeDeclare("exchange-name", "direct", false, false, false, false, nil)err = ch.ExchangeDeclare("exchange-name-topic", "topic", false, false, false, false, nil)if err != nil {panic(err)}//4.定義隊列 queue//queue, err := ch.QueueDeclare("", false, false,false,false, nil)//if err != nil {// panic(err)//}//5.綁定 bind//6.定義發布的消息//msg := "hello"//7.發布消息//err = ch.Publish("exchange-name", "direct_key", false, false, amqp.Publishing{Body: []byte(msg)})err = ch.Publish("exchange-name-topic", "topic.first", false, false, amqp.Publishing{Body: []byte("topic1")})err = ch.Publish("exchange-name-topic", "TOPIC.eg", false, false, amqp.Publishing{Body: []byte("topic-eg")})err = ch.Publish("exchange-name-topic", "topic.last", false, false, amqp.Publishing{Body: []byte("topic2")})if err != nil {panic(err)} }總結
以上是生活随笔為你收集整理的消息队列--RabbitMQ简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 消息队列基本知识
- 下一篇: shell中三种引号的区别
