架构/框架
爱很遥远
事有其道
展开
-
RabbitMQ官网教程4——路由
前面的章节我们创建了一个简单的日志系统,可以把消息广播到许多接收者。本节我们将增加一个特性——只订阅一部分消息。比如只把错误日志输出到文件,同时把所有日志输出到屏幕。 绑定 前面的例子里我们已经创建过绑定。绑定就是交换机和队列间的一种关系,简单解读为队列关注该交换机的消息。创建绑定时可以增加一个参数routing_key,为了避免跟basic_publish的参数混淆,翻译 2017-03-08 23:15:52 · 272 阅读 · 0 评论 -
RabbitMQ官网教程3——发布订阅
前面我们创建了工作队列,工作队列中每个任务只分发给一个worker。现在我们要把一个消息分发给多个消费者,这种模式就是发布订阅。为解释这种模式,我们将构建一个简单的日志系统,它包括两个程序——一个提交日志,另一个接收并打印。日志系统中每个接收程序的拷贝都会收到消息,这样可以一个将日志写入磁盘,另一个输出到屏幕。本质上讲,发布的日志消息被广播给了所有的消费者。 交换机 前面翻译 2017-03-07 22:49:35 · 270 阅读 · 0 评论 -
RabbitMQ官网教程2——工作队列
第一节中我们实现了简单的发送接收消息。现在我们创建一个工作队列,用于在多个worker中分配耗时任务。工作队列是为了避免立即执行资源密集型任务并等待其完成,有了工作队列,就可以稍后再处理任务。我们把任务封装成消息并发送到队列,后台的工作进程从队列中取出任务并执行。当有多个工作进程时,任务会在它们中分发。 web app中,在一个很短的http请求时长内不可能处理一个复杂的任务,这翻译 2017-03-06 22:59:11 · 329 阅读 · 0 评论 -
RabbitMQ官网教程1——Hello World
RabbitMQ是一个消息中间件——接收和发送消息。你可以把它想象成一个邮局,当你把邮件投递到邮箱后,你就可以确信邮递员最终会帮你把邮件寄给收件人。 术语: 生产者——发送消息; 队列:“邮箱”,存在于RabbitMQ内。虽然消息可以在RabbitMQ及应用中流转,但是只能在队列中存储,队列没有限度,可以存储任意多的消息,多个生产者可以向一个队列中发送消息,多翻译 2017-03-05 22:22:34 · 1269 阅读 · 0 评论 -
RabbitMQ官网教程5——topic
前面的章节我们改进了日志系统,利用direct交换机,可以选择性的接收日志。但是,这仍然有局限,不能基于多个规则进行路由。在日志系统里,我们可能不只根据安全级别订阅日志,还可能想根据日志源来订阅。就像Unix 工具syslog,根据安全级别及设备来路由日志。这样就比较灵活了。为了实现这种效果,我们需要学习topic交换机。 topic交换机 发送到topic交换机的消息,翻译 2017-03-09 23:04:21 · 398 阅读 · 0 评论 -
线程池,这一篇或许就够了
原文 https://segmentfault.com/a/1190000009098623 为什么用线程池 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 >例如: > >记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 > >如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了! > >正好,线程池缓转载 2017-04-19 22:26:31 · 305 阅读 · 0 评论 -
自己编写的简单的线程池
利用C++11的std::thread,实现生产消费模型。 /*任务接口*/ #ifndef _ITASK_HEAD_ #define _ITASK_HEAD_ class ITask { public: ITask(void *arg = nullptr) :m_arg(arg) { } virtual ~ITask() { } void原创 2017-04-23 19:58:25 · 340 阅读 · 0 评论