如何安裝與使用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
留言
張貼留言