《RabbitMQ 实战》读书笔记

MQ的好处:

1.业务上接口(系统扩展性变强)

2.性能提升(同步变异步,效率提高,还方便做负载均衡)

3.技术兼容(可以连接各种不同语言的系统,作为粘合剂)

 

读书笔记:

1.消息队列的应用场景:系统集成。其它方案是,通过写数据库,定时轮询来读取数据

2.信道(channel)的好处是:可以减少TCP连接的成本,在同一个TCP连接里,建立多条信道,既保证了私密性,又不会给操作系统的TCP栈造成额外负担

 

3.接收消息的2种订阅命令:

  1)basic.consume:自动接收

  2)basic.get:一条条接收(禁止,使用此命令来代替上面的命令,会有性能问题)

4.消息在接收方处理完上一条之前,不会消费下一条。利用这点,可以在消费方延迟确认,来防止应用过载。

5.当要丢弃一条消息时,使用basic.reject命令。注意把requeue参数设为false,则不会继续给下一个消费者,而是直接丢进“死信”队列

6.队列该由谁来创建:如果业务场景允许消息丢失,可以由消费来创建。否则,则应该双方都创建。

7.路由器的几种类型:

  1)direct:路由键匹配

  2)fanout:广播

  3)topic:订阅。"."把key分割,“*”任意匹配,“#”所有匹配

PS.根据路由键和交换器类型,服务器会决定将消息投递到哪个队列去。

8.为了确保消息的准确性,可以使用confirm模式(消息带上唯一ID)。这个模式是异步的,性能消耗很小(对应的有个事务模式,性能消耗巨大,但是可以回滚)。

 

 其它:

1.第一次阅读,是略读。很多关于高可用,效率优化方面的内容没仔细看。后面有机会再深入精度一遍

 

命令list:

1.basic.consume:自动接收

2.basic.get:一条条接收(禁止,使用此命令来代替上面的命令,会有性能问题)

3.basic.reject:拒收消息。注意把requeue参数设为false,则不会继续给下一个消费者,而是直接丢进“死信”队列

4.basic.decdeclare:创建队列

5.exchange.declare:声明自己的交换器

 

队列相关参数设置:

1.exclusive:设为ture的话,则变为私有队列。一个队列只有一个消费者

2.auto-delete:当消费者没有时,自动删除队列

3.queue.declare的passive参数:如果为ture,用于检测队列是否存在

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-08-27 11:15  系统攻城狮  阅读(269)  评论(0编辑  收藏  举报