rabbitmq学习:
消息隊列(消息中間件)常見的有三種:RabbitMQ、ActiveMQ、ZeroMQ
這里要說的是RabbitMQ。
需要明確的幾個概念:
Broker: 翻譯為中文應該是“經紀人”、“中間人”吧,就是指RbbitMQ服務本身
vhost: 虛擬主機,做權限控制用的,每個包含一組exchanges, queues,bindings
Exchange: “交換機”,可以理解為有路由表(binding)的路由程序,而每個消息都有一個routing key的屬性,嗯,和路由原理很相像。
Queue:? 消息的終點,消息到達這里后,等待著被消費者取走
Binding: 就是路由規則
Routing Key: 相當于ip地址
producer:? 嗯
consumer: 嗯
channel:? --這個不是很明白呀,通信流?會話?
?
python可以使用的庫有py-amqplib, txAMQP, pika,我跟著tutorial學了pika
?
首先,需要與RabbitMQ server建立連接,并在連接中建立channel
import pika connection = pika.BlokingConnection(pika.ConnectionParameters('localhost', 5672)) channel = connection.channel()第二步,需要確認接收隊列存在,若將消息發給一個不存在的隊列,RabbitMQ會丟棄這個消息。我們來創建一個叫做hello的隊列吧:
channel.queue_declare(queue='hello')第三步, 這時已經可以發送消息了,消息必然要經過exchange才能到達queue,關于exchange,附錄的文章中有比較好的說明。這里只需選擇默認exchange。
channel.basic_publish(exchange='',routing_key='hello',body='Hello Word!')結束程序前,需要確認network buffers 已經被刷新,關閉連接即可。
connection.close()-----------------------------------------------------------------------
Listing queues
You may wish to see what queues RabbitMQ has and how many messages are in them. You can do it (as a privileged user) using the rabbitmqctl tool:
$ sudo rabbitmqctl list_queues Listing queues ... hello 0 ...done.(omit sudo on Windows)
------------------------------------------------------------------------
?
==============================================================
?
該consumer端到隊列里面去消息了,同樣的,建立連接和channel,嗯代碼同前。在開始之前,首先確認下隊列已經存在,跟producer端一樣的,因為不知道是哪邊程序先啟動,這樣做很保險。
channel.queue_declare(queue='hello')接收端得到一個消息,會調用用戶定義的回調函數,那么我們先定義一個回調函數吧。
簡單點的,打印消息
def callback(ch, method, properties, body):print “ Received %r" % (body,)然后告訴RabbitMQ我定義的這個回調函數應該處理hello隊列中的消息(這要求此隊列必須存在,我們之前用queue_declare確認過了):
channel.basic_consume(callback,queue='hello',no_ack=True)好了,進入等待狀態吧,有消息過來了,就會調用之前定義好的回調函數了:
channel.start_consuming()?
?
資源鏈接:
官網tutorial:??? http://www.rabbitmq.com/tutorials/tutorial-one-python.html
[翻譯] [RabbitMQ+Python入門經典] 兔子和兔子窩:http://blog.ftofficer.com/2010/03/translation-rabbitmq-python-rabbits-and-warrens/
原文: https://bmark.us/bmark/readable/6067c44d09ee21
消息隊列RabbitMQ入門介紹? http://www.nsbeta.info/archives/200
轉載于:https://www.cnblogs.com/tothegump/p/3195421.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的rabbitmq学习:的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决WP7的32位图像渐变色色阶问题
- 下一篇: 分析cocos2d-x中的Crystal