上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
摘要: 观察者模式 再次申明,本文学习自 程杰 兄的 “大话设计模式” 根据书中的内容和自己的体会而来。 观察者模式也叫 发布、订阅模式,在这个模式里,一个目标物件管理所有依赖它的观察者物件,在本身状态更改时发出通知,通知将被观察者接收到。 书中用例子 炒股 来形容了这一点,在炒股的同事是观察者,依赖于前台妹子。当老板来的时候向炒股的同事发出通知,但是问题是 前台妹子与炒股的同事耦合在一起,这并不符合依赖... 阅读全文
posted @ 2016-12-26 22:05 liangshiwei 阅读(320) 评论(0) 推荐(0)
摘要: Session导致Action不异步 啊。回想起来,真是一个大坑啊,最近博主在做一个上传文件实时显示进度条的功能。博主的思路是在上传的时候用一个Task一秒一次向Redis中插入当前的上传进度 ,上传视频后再轮询上传进度实时显示在客户端。 然后我就开始敲代码了,一起看起来都没什么问题。运行的时候一下就懵比了,发现轮询的请求要等到上传的请求返回才可以进入到action中。也就是说我的请求不是异步的... 阅读全文
posted @ 2016-12-26 15:29 liangshiwei 阅读(465) 评论(0) 推荐(0)
摘要: 参数们的Power 在声明队列的时候会有很多的参数 public static QueueDeclareOk QueueDeclare(this IModel model, string queue = "", bool durable = false, bool exclusive = true, bool autoDelete = true, IDictionary arguments = n... 阅读全文
posted @ 2016-12-25 00:39 liangshiwei 阅读(11865) 评论(0) 推荐(2)
摘要: 实现RPC 首先要弄明白,RPC是个什么东西。 (RPC) Remote Procedure Call Protocol 远程过程调用协议 在一个大型的公司,系统由大大小小的服务构成,不同的团队维护不同的代码,部署在不同的机器。但是在做开发时候往往要用到其它团队的方法,因为已经有了实现。但是这些服务部署不同的机器上,想要调用就需要网络通信,这些代码繁琐且复杂,一不小心就会写的很低效。RPC协议定... 阅读全文
posted @ 2016-12-24 00:45 liangshiwei 阅读(13040) 评论(0) 推荐(5)
摘要: Topic exchange topic与之前的每个类型都不同(ps:废话每个都是不同的)。Topic解决了我们另一个需求。举个例子,有一个做资讯的公司,他们会收集各种科技公司的动态并且第一时间转发出来。小编A负责微软公司,小编B负责谷歌公司,手工去搜索文章并且看标题是否匹配再进行转发是非常的低效的,可能小编们想要偷懒,写一个程序去各大网站进行爬数据,对于标题中含有微软的交给小编A,对于标题中含有... 阅读全文
posted @ 2016-12-21 23:29 liangshiwei 阅读(1816) 评论(0) 推荐(0)
摘要: Headers Exchange headers也是一种交换机类型,但是在rabbitmq官网中的教程中并没有说到。资料也很少,但是找一找总会有的。 headers与direct的模式不同,不是使用routingkey去做绑定。而是通过消息headers的键值对匹配 发布者 -- > headersexchange --> (user: “小明 ”) binding --> queue... 阅读全文
posted @ 2016-12-20 11:25 liangshiwei 阅读(4120) 评论(0) 推荐(0)
摘要: fanout 多播 在之前都是使用direct直连类型的交换机,通过routingkey来决定把消息推到哪个queue中。 而fanout则是把拿到消息推到与之绑定的所有queue中。 分析业务,怎样的场景需要它呢?某个用户注册了网站的用户,一般我们需要发送短信和邮件通知,莫非要在同一个consumer中把这两件事都做了?这不符合单一职责,可是发送的消息是一样的,只是方式不一样。要使用两种rout... 阅读全文
posted @ 2016-12-18 22:35 liangshiwei 阅读(5500) 评论(0) 推荐(0)
摘要: RoutingKey 每个项目都需要记录日志,日志则一般会分为多种级别,常见的是 Info、debug、warn、Error 对于前三种日志,在项目运行中会产生大量的消息,但是一般多数情况下是不会用到的即时性不高,而error则不同,对于error级别的消息需要迅速通知开发人员去修改项目中的错误 使用RabbitMq应该怎么设计? 可以分析一下 首先我们需要一个exchange,对于即时性不高... 阅读全文
posted @ 2016-12-17 17:01 liangshiwei 阅读(7253) 评论(2) 推荐(1)
摘要: 异常情况处理 上篇最后提到了这个问题, consumer异常退出、queue出错、甚至rabbitMQ崩溃。因为它们都是软件 ,软件都会有bug,这是无法避免的。所以RabbitMQ在设计的时候也想到了这一点 在之前,消息分发给consumer后立即就会被标记为已消费,这时候如果consumber接到了一个消息但是还没有来的及处理就异常退出,那么这个消息的状态是已被消费的,于是就会造成消息丢失的... 阅读全文
posted @ 2016-12-15 22:08 liangshiwei 阅读(6721) 评论(5) 推荐(0)
摘要: 多个Consumer的消息分发 之前讲过一个queue对应一个consumer的小例子, 但是在实际项目中,一个consumer肯定是不够的,queue中的消息过多。一个consumer明显会处理过慢,等待时间过长。这时候就需要多个consumer来缓解压力。 消息发布端 无论是创建connection还是创建channel与之前的步骤都是一样的,在上面我们使用的是默认的交换机。在这里可以自己... 阅读全文
posted @ 2016-12-15 00:46 liangshiwei 阅读(14506) 评论(8) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页