首页 > 代码库 > RabbitMQ(2)
RabbitMQ(2)
上一次安装了RabbitMQ并成功创建了vhost和user,但是生产和消费的过程还没有完成,这次主要调了一下这个过程。
上次主要的问题是没有实现过程代码的编写保存,其实也就是Python程序,这两天看了一下Python的基本知识,完成了
基本的Hello World的生产消费:
1.生产send.py:
进入vim,编写生产进程
!/usr/bin/env python import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) 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()
过程:先和RabbitMQ server建立连接,localhost代表的是本机,如果要连接到其它主机,使用对应的主机地址就OK
;声明队列hello;由于消息不能直接传递到消息队列当中去,所以需要一次exchange,这里使用默认的交换
‘‘,routing_key为队列的名字;然后在关闭连接。
2.消费receive.py
进入vim,编写消费进程
!/usr/bin/env python import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue_declare(queue='hello') print ' [*] Waiting for messages. To exit press CTRL+C' def callback(ch, method, properties, body): print " [x] Received %r" % (body,) channel.basic_consume(callback,queue='hello',no_ack=True) channel.start_consuming()
过程:建立连接;声明队列,这里声明的原因是我们不知道预先存在的队列是什么,所以我们就确定化我们的目标
消费队列就是我们前面缩写的send.py里面的队列hello;然后建立我们的消费方法callback;然后声明消费的
对象队列是hello队列;然后启动。
测试的时候,首先启动生产进程send.py:
$ python send.py [x] Sent 'Hello World!'
然后我们会显示生产的标识消息:[x] Sent ‘Hello World!‘
生产进程每执行一次生产就停止了。
然后再启动消费进程:
$ python receive.py [*] Waiting for messages. To exit press CTRL+C [x] Received 'Hello World!'
这里我们就会发现在Received后面出现了我们生产进程中发出的信息‘Hello World!‘,这样便完成了一次生产消
费过程。
也可以打开两个终端,在其中一个终端上一直执行生产进程,我们会发现在另一个终端上会一直显示我们的消费标识
信息,即边生产边消费。
后面第二部分的就是多个消费worker(),还在看.....
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。