如何安裝與使用Rabbitmq Server在Ubuntu

如何安裝與使用Rabbitmq Server在Ubuntu

本篇文章介紹如何在Ubuntu上安裝Rabbitmq server並且使用Python編寫helloworld範例程式來驗證rabbitmq server可以正常運作。

安裝

在ubuntu上安裝rabbitmq server很簡單只需要一個安裝指令就可以完成。
 sudo apt-get install rabbitmq-server

啟動

安裝完成後,透過service指令來啟動
 sudo service start rabbitmq-server

確認rabbitmq-server是否有啟動成功
 sudo service status rabbitmq-server

管理

rabbitmq client連線過來server這邊需要有使用者與認證,開始使用之前先透過rabbitmqctl指令來設定

列出所有使用者
 sudo rabbitmqctl list_users
 Listing users ...
 guest   [administrator]

上述顯示只有一個guest使用者,該使用者權限等級為Administrator

目前一共有四種權限
  • none
  • management
  • policymaker
  • monitoring
  • administrator

建立一個使用者
 sudo rabbitmqctl add_users abay password

設定使用權限
 sudo rabbitmqctl set_user_tags abay administrator
 Setting tags for user "abay" to [administrator] ...

 sudo rabbitmqctl list_users
 Listing users ...
 guest   [administrator]
 abay [administrator]

啟用Web管理介面
 sudo rabbitmq-plugins enable rabbitmq_management
 The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management


進入Web介面




















HelloWorld


Python版本的HelloWorld送訊息到Queue
 import pika

 username = 'abay'
 password = 'password'
 host = '192.168.1.1'

 credentials = pika.PlainCredentials(username, password)
 connection = pika.BlockingConnection(pika.ConnectionParameters(host=host, credentials=credentials, port=5672))
 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()

錯誤訊息:
 ProbableAccessDeniedError

發生這個錯誤的原因是沒有對使用者設定存取的來源權限。

找到Users的資訊就可以看到目前使用者是沒有設定權限的。

設定權限的方式
 #rabbitmqctl set_permissions -p '/' abay ".*" ".*" ".*"
 Setting permissions for user "abay" in vhost "/" ...












再次的執行程式就可以成功送出訊息。


接收訊息
 import pika

 username = 'abay'
 password = 'password'
 host = 'your_ip_address'

 credentials = pika.PlainCredentials(username, password)
 connection = pika.BlockingConnection(pika.ConnectionParameters(
     host=host, credentials=credentials, port=5672
 ))

 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()

能夠成功執行範例程式就代表你已經成功完成。


參考資料

  • Installing on Debian / Ubuntu, https://www.rabbitmq.com/install-debian.html

留言

這個網誌中的熱門文章

如何關閉nouveau-kernel-driver,解決無法安裝Nvidia driver問題

如何在Nginx所設置的Proxy中可以取得真實客戶的IP位址

如何客製VMware ESXi安裝光碟(加入Realtek驅動程式)