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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值