内容简介:记得在学习Celery的时候,官方文档就建议我们的broker使用RabbitMQ或Redis,可是当然由于Redis使用比较习惯,并且不用在去另外安装,因此好长时间都没有去学习这个东西.首先RabbitMQ绝对不像大众所认识的那样,是JAVA或者Python,GO写的,而是一种交换机语言ERLang,前段时间这个语言的发明人的离世也是轰动了整个IT界,而作为程序员的我因为时间问题没有学习RabbitMQ,很是后悔呀,所以现在赶紧学习学习,废话不多说,请欣赏...但是不要以为这样就能开始,当你运行以下代码就
记得在学习Celery的时候,官方文档就建议我们的broker使用RabbitMQ或Redis,可是当然由于 Redis 使用比较习惯,并且不用在去另外安装,因此好长时间都没有去学习这个东西.首先RabbitMQ绝对不像大众所认识的那样,是 JAVA 或者Python,GO写的,而是一种交换机语言ERLang,前段时间这个语言的发明人的离世也是轰动了整个IT界,而作为 程序员 的我因为时间问题没有学习RabbitMQ,很是后悔呀,所以现在赶紧学习学习,废话不多说,请欣赏...
这是什么东西?
- RabbitMQ是一个消息队列的中间件,通俗点讲就是饮料生产商(康师傅,达利园等等)生产东西放入超市,然后用户去超市里拿.这里的超市就是我们的RabbitMQ,饮料生产商就是所谓的生产者,用户就是消费者,这里生产者可以好多种消息(茉莉,红茶等等)放入到队列中,消费者也可以根据名称去拿(我只能去买),这就是其功能.
但是不要以为这样就能开始,当你运行以下代码就会发现报错:
530, "NOT_ALLOWED - access to vhost '/' refused for user 'jim'"
这是怎么回事呢?我也给大家解决了,点击查看
__生产者__:
import pika class Produce: def __init__(self, host, port, credentials): # 创建连接参数对象 parameters = pika.ConnectionParameters(host, port, credentials=credentials) # 创建连接对象 self._conn = pika.BlockingConnection(parameters) # 创建一个默认channel self._channel = self._conn.channel() def create_channel(self, num): """ 创建channel """ self._channel = self._conn.channel(num) def create_queue(self, name): """ 创建queue """ self._channel.queue_declare(queue=name) self._key = name def run(self, body): """ 生产消息 """ self._channel.basic_publish(exchange='', routing_key=self._key, body=body, ) print(" [x] Sent Message Successful! ") self._conn.close() if __name__ == '__main__': host = 'localhost' port = 5672 credentials = pika.PlainCredentials('jim', 'adminjim') produce = Produce(host, port, credentials) produce.create_queue('你傻不傻') produce.run('你就是一个垃圾')
__消费者__:
import pika class Custumer: def __init__(self, host, port, credentials): # 连接到rabbitmq服务器 self.conn = pika.BlockingConnection(pika.ConnectionParameters(host, port, credentials=credentials)) self.channel = self.conn.channel() def create_or_user_queue(self, name): # 声明消息队列,消息将在这个队列中进行传递。如果队列不存在,则创建 self._key = name self.channel.queue_declare(queue=name) def _callback(self, ch, method, properties, body): """ 定义一个回调函数来处理,这边的回调函数就是将信息打印出来。 """ print(" [x] Received %r" % (body, )) # 告诉rabbitmq使用callback来接收信息 def run(self): self.channel.basic_consume(on_message_callback=self._callback, queue=self._key, auto_ack=True) # no_ack=True表示在回调函数中不需要发送确认标识 print(' [*] Waiting for messages. To exit press CTRL+C') self.channel.start_consuming() # 开始接收信息,并进入阻塞状态,队列里有信息才会调用callback进行处理。 if __name__ == '__main__': host = 'localhost' port = 5672 credentials = pika.PlainCredentials('jim', 'adminjim') custumer = Custumer(host, port, credentials) custumer.create_or_user_queue('你傻不傻') custumer.run()
有没有学会呢,学不会或者觉得简单的都不要着急,我会学深入了再来满足大家.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- TiDB入门(四):从入门到“跑路”
- MyBatis从入门到精通(一):MyBatis入门
- MyBatis从入门到精通(一):MyBatis入门
- Docker入门(一)用hello world入门docker
- 赵童鞋带你入门PHP(六) ThinkPHP框架入门
- 初学者入门 Golang 的学习型项目,go入门项目
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
x86/x64体系探索及编程
邓志 / 电子工业出版社 / 2012-10-1 / 119.00元
本书是对Intel手册所述处理器架构的探索和论证。全书共五大部分,从多个方面对处理器架构相关的知识进行了梳理介绍。书中每个章节都有相应的测试实验,所运行的实验例子都可以在真实的机器上执行。 通过阅读本书,读者应能培养自己动手实验的能力。如果再有一些OS方面的相关知识,基本上就可以写出自己简易的OS核心。 本书适合有一定的x86基础知识,且对了解处理器架构及编程感兴趣的读者阅读。一起来看看 《x86/x64体系探索及编程》 这本书的介绍吧!