您的位置:首页 > 其它

rabbitmq 教程 一 hello world

2012-09-04 20:16 260 查看
一些概念的理解从张聪那里大概知道了,接下来是实战。参照 www.rabbitmq.com上的教程学习

connection=pika.ConnectionParameters(
'localhost')  #如果是远程的服务器,记得要把相应的端口打开,免得被防火墙禁掉。
connection = pika.BlockingConnection(connection)

channel=connection.channel()

#在服务器上声明一个队列,用于我们的通信

channel.queue_declare(queue='hello')#hello是队列的名字,当然也可以命名为queue='gauss'

#把一条消息发到服务器的队列上
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')#routing_key将我们想要发送的消息送到hello这个队列。按照‘hello world’原则,exchange选项暂时不管。

如果你要关闭,请

connection.close()

接下来,怎么接受消息呢?

首先呢,还是要先连接服务器,
connection=pika.ConnectionParameters( 'localhost') #如果是远程的服务器,记得要把相应的端口打开,免得被防火墙禁掉。 connection = pika.BlockingConnection(connection) channel=connection.channel()#在服务器上声明一个队列,用于我们的通

教程上说,要加上

channel.queue_declare(queue='hello')
,先申请一个hello队列,如果服务器上已经有了,rabbitmq是不会重复创建的。免得我们去连接一个还没有创建的队列。

#拿到信息之后你要干麽啊,这里就暂时只是显示信息把

def callback(ch, method, properties, body):

print " [x] Received %r" % (body,)#信息处理

怎么拿信息呢

channel.basic_consume(callback,
queue='hello',
no_ack=True)#函数的命名挺好的,consume,这里的no_ack=True是说,服务器你把消息发送出去之后就把那个信息从队列里删了吧。潜台词就是,可以不删除,然后其他消费者还可以取这条消息,怎样就不删除。no_ack=False,其实这个也是默认的。具体下一张讲。

我们可以让这个消费者一直在等待,只要有消息他就去取

print ' [*] Waiting for messages. To exit press CTRL+C'

channel.start_consuming()

tips:

查看服务器上的消息的情况,可以队列上有多少个信息,publish成功了没?consume成功没?

linux用户,sudo rabbitmqctl list_queues

win:这个rabbitmqctl在安装目录的sbin那。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: