Fork me on GitHub

mq

RabbitMQ简易教程 - 并发调度

RabbitMQ任务调度默认是阻塞的,使用pika中的channel.start_consuming()的时候, 每次收到一条消息后会顺序执行完回调函数,发送ACK的确认消息,然后再执行下一条消息。 虽然说可同时接受多条消息,但是并不能同时处理这多条消息,那么需要自己在代码里面实现任务的并发调度。 在Python里面实现并发方式多种多样,有多线程、多进程、多协程方式,我演示下如何实现。 默认方式我先使用默认方式看看是否阻塞,消费者处理消息的回调函数中,我特定使用time...

RabbitMQ简易教程 - WebSocket

之前写过一篇 使用Ajax实现异步任务 的文章, 介绍了对于需要知道异步处理返回结果的情况,使用Ajax的轮训和长连接方式实现。 但是这两种方式都会生成大量的HTTP连接,对服务器资源是一种巨大的浪费, 这里正式介绍如果通过WebSocket + RabbitMQ来优雅的实现。 WebSocket 双向通信WebSocket 是 HTML5 中一种新的通信协议,能够实现浏览器与服务器之间全双工通信。 如果浏览器和服务端都支持 WebSocket 协议的话,该方式实现的消...

RabbitMQ简易教程 - RPC

在教程第二篇里面我们学习了如何实现一个任务队列,异步方式去处理那些比较耗时的任务。 但是如果我们需要调用一个远程主机上面的方法,并且等待它的执行结果呢? 这种模式我们通常将它称为远程方法调用(RPC)。 这一篇我们将利用RabbitMQ来构建一个RPC服务,服务器上面有一个可返回斐波拉契数的函数。 客户端通过rpc调用来获取结果。 客户端接口为了演示的方便,我在客户端创建一个简单的类,里面有个call方法,它会发送一个rpc请求并等待执行的返回结果。 使用它的方式如下...

RabbitMQ简易教程 - 主题

前面一篇通过使用direct类型的交换机代替fanout广播类型交换机, 实现了一个基于日志级别路由对应的消息的功能。 但是还是有它的局限性——它并不能根据多个条件来实现路由,只能通过完全匹配routing key, 灵活性不够。 比如我想实现仅仅对于那些error级别日志并且由kern生成的日志才记录到文件中。 主题交换机主题交换机的binding key和发送到该交换机的消息所带的routing key并不是一个简单的单词, 而是以点.隔开的单词序列。比如stock...

RabbitMQ简易教程 - 路由

前面一篇实现了一个非常基础的日志系统,交换机将所有接收到的消息广播到它所知道的多个接受者。 这一节我们更进一步,实现订阅部分消息的功能。比如我只讲那些ERROR级别的消息写入日志文件, 同时将所有日志打印到控制台上面。 绑定在前面的例子我们已经创建了一个绑定: channel.queue_bind(exchange=exchange_name, queue=queue_name) 简单讲就是这个队列对这个交换机上面的消息很感兴趣。...

RabbitMQ简易教程 - 发布订阅

前面一篇介绍的任务队列是每个消息只能被一个工作者取走。这一篇讲解发布/订阅消息模式, 在这个模式里面,一个消息可以被发送给多个消费者。 这里我通过一个简单的日志系统来说明,消息生产者会将日志发送给队列,然后多个订阅者可以接收到这条日志显示到不同的地方, 比如可以打印到文件中,同时打印到控制台上面。 Exchanges前面都是直接向某个队列发送/接受消息,现在是时候构建一个RabbitMQ中完整的消息模型了。 在RabbitMQ中,消息生产者从来不会将消息直接发送给某个队...

RabbitMQ简易教程 - 任务队列

这里演示的官网通过python使用消息队列的教程:https://www.rabbitmq.com/getstarted.html 先演示最简单的一个入门级别的hello world例子, 发送者发送一个字符串,接受者接收到消息后打印出来。然后再介绍怎样实现任务队列 hello world这里使用 python 的pika来演示,先安装pika: pip install pika 发送者程序需要先建立一个到RabbitMQ的连接(ip地址就是rabbitmq服务器地址...

RabbitMQ简易教程 - 安装

最近又开始捣鼓RabbitMQ了,一个超好用的队列中间件,官网教程更新,自己也将有用的东东记录下来。 测试环境:消息服务器CentOS7.4、客户端Python3.6.1 RabbitMQ是一个出色的消息代理中间件(Message Broker):接受和转发消息。你可以将它看作是一个邮局, 你把自己的信件写上收件人地址,然后放到邮筒里面就不用管了,由邮局负责将这个信件送到目的地。 几个术语 Broker - 简单来说就是消息队列服务器的实体。 Exchange - 消息...