python之路_RabbitMQ相關介紹

1、什麼是RabbitMQ?html

  消息隊列(Message Queue)是一種應用間的通訊方式,消息發送後能夠當即返回,由消息系統來確保消息的可靠傳遞。消息發佈者只管把消息發佈到 MQ 中而不用管誰來取,消息使用者只管從 MQ 中取消息而無論是誰發佈的。這樣發佈者和使用者都不用知道對方的存在。node

  rabbitMQ是一款基於AMQP協議的消息中間件,它可以在應用之間提供可靠的消息傳輸。在易用性,擴展性,高可用性上表現優秀。使用消息中間件利於應用之間的解耦,生產者(客戶端)無需知道消費者(服務端)的存在。並且兩端能夠使用不一樣的語言編寫,大大提供了靈活性。python

2、RabbitMQ安裝c++

'''
rabbitmq 源碼安裝

官網地址:rabbitmq
http://www.rabbitmq.com/releases/rabbitmq-server/
官網地址:erlang
http://erlang.org/download/

1、概念:
     Broker:簡單來講就是消息隊列服務器實體。
   Exchange:消息交換機,它指定消息按什麼規則,路由到哪一個隊列。
   Queue:消息隊列載體,每一個消息都會被投入到一個或多個隊列。
   Binding:綁定,它的做用就是把exchange和queue按照路由規則綁定起來。
   Routing Key:路由關鍵字,exchange根據這個關鍵字進行消息投遞。
   vhost:虛擬主機,一個broker裏能夠開設多個vhost,用做不一樣用戶的權限分離。
   producer:消息生產者,就是投遞消息的程序。
   consumer:消息消費者,就是接受消息的程序。
   channel:消息通道,在客戶端的每一個鏈接裏,可創建多個channel,每一個channel表明一個會話任務。

2、安裝RabbitMQ
     CentOS:
          1.先安裝erlang
               # PS: 注意安裝操做首先要切換到root工做環節中
               # 在命令 若是$ 表示是普通用戶,
               yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel 
               yum -y install ncurses-devel 
               yum install ncurses-devel 
               wget http://erlang.org/download/otp_src_19.3.tar.gz
               tar -xzvf otp_src_19.3.tar.gz
               cd otp_src_19.3
               ./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe 
               make && make install
               配置erlang環境
               vi /etc/profile  #在最後添加下文
               PATH=$PATH:/usr/local/erlang/bin
               使環境變量生效
               source /etc/profile
               測試一下是否安裝成功,在控制檯輸入命令erl
               crt+z 退出
          2.安裝rabbitmq
    
               wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.8/rabbitmq-server-3.5.8.tar.gz
               tar -zxvf rabbitmq-server-3.5.8.tar.gz
               cd rabbitmq-server-3.5.8
               make
               make TARGET_DIR=/usr/local/rabbitmq SBIN_DIR=/usr/local/rabbitmq/sbin MAN_DIR=/usr/local/rabbitmq/man DOC_INSTALL_DIR=/usr/local/rabbitmq/doc install
               配置erlang環境
               vi /etc/profile  #在最後添加下文
               PATH=$PATH:/usr/local/erlang/bin:/usr/local/rabbitmq/sbin
               使環境變量生效
               source /etc/profile
          3. 啓動:rabbitmq-server
                rabbitmq-server start
          4. 檢查服務啓動狀態
                [root@node01 ~]# netstat -lnpt|grep beam
                tcp        0      0 0.0.0.0:5672                0.0.0.0:*                   LISTEN      19733/beam          
                tcp        0      0 0.0.0.0:25672               0.0.0.0:*                   LISTEN      19733/beam          
                tcp        0      0 0.0.0.0:15672               0.0.0.0:*                   LISTEN      19733/beam          
                [root@node01 ~]# 
                #  表示啓動成功
3、管理命令
       啓動:rabbitmq-server start
       關閉:rabbitmqctl stop
       狀態:rabbitmqctl status

4、插件
    啓動web管理插件
        rabbitmq-plugins enable rabbitmq_management
        若是報錯
        錯誤解決:
            Error: {cannot_write_enabled_plugins_file,"/etc/rabbitmq/enabled_plugins",            enoent}
            mkdir /etc/rabbitmq
            從新啓動輸入地址:localhost:15672,賬號默認爲guest,密碼guest,此賬號默認只能在本機訪問。不建議打開遠程訪問。你能夠建立一個賬戶,並設置能夠遠程訪問的角色進行訪問。
            如:
            rabbitmqctl add_user supery 123                # 建立用戶supery
            
            rabbitmqctl  set_user_tags  supery administrator        # 給建立的supery用戶administrator角色

5、用戶管理
     默認的guest賬戶至關於root賬戶
     rabbitmqctl add_user username password 添加賬戶
     rabbitmqctl change_password username newpassword 修改密碼
     rabbitmqctl delete_user username 刪除賬戶
     rabbitmqctl list_users 列出全部賬戶
     rabbitmqctl  set_user_tags  User  Tag 設置角色(administrator、monitoring、policymaker、management、其它)
     當即生效,不需重啓

6、建立配置文件
[root@node01 ~]# ll /etc/rabbitmq/
total 8
-rw-r--r-- 1 root root 23 Mar  5 10:07 enabled_plugins
-rw-r--r-- 1 root root 51 Mar  5 10:12 rabbitmq.config
[root@node01 ~]# cat /etc/rabbitmq/rabbitmq.config 
[{rabbit, [{loopback_users, ["root","supery"]}]}].

操做步驟:
    vi /etc/rabbitmq/rabbitmq.config
    將[{rabbit, [{loopback_users, ["root","supery"]}]}]. 複製到文件中便可
    
    
    
    esc
    :x  保存並退出
    
7、重啓rabbitmq-server並測試訪問
rabbitmqctl stop
rabbitmqctl start
瀏覽器訪問
    1. 查看本身的服務器ip地址
    ifconfig
    # inet addr:172.24.129.3        ===> 服務器ip地址
    2. 瀏覽器訪問
    http://39.104.109.159:15672      ===> 輸入用戶密碼登陸便可
    
登陸成功!完成
'''

3、工做模式web

一、簡單模式瀏覽器

  生產者示例:服務器

# ######################### 生產者 #########################
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters( host='localhost'))

channel = connection.channel()

channel.queue_declare(queue='hello')

channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')

print(" [x] Sent 'Hello World!'")
connection.close()

  消費者示例:tcp

# ########################## 消費者 ##########################
 
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
 
channel.queue_declare(queue='hello')
 
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
 
channel.basic_consume( callback,
                       queue='hello',
                       no_ack=True)
 
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()

二、exchange模型oop

4、基於RabbitMQ的RPC測試

  詳細內容請參考博客:http://www.cnblogs.com/yuanchenqi/articles/8507109.html

相關文章
相關標籤/搜索