持续更新中......
1、RabbitMQ五种模式
a、简单模式:消息生产者将消息放入队列,消息的消费者监听消息队列;消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失;一个消息生产者对应一个消费者;应用场景:聊天
b、工作队列模式(资源的竞争):一个消息生产者对应多个消费者;高并发情况下,默认会产生某一个消息被多个消费者共同使用,可以设置一个开关(syncronize,与同步锁的性能不一样)保证一条消息只能被一个消费者使用;应用场景:抢红包
c、publish/subscribe发布订阅(共享资源):消息产生者将消息放入交换机,交换机发布订阅把消息发送到所有消息队列中,对应消息队列的消费者拿到消息进行消费;应用场景:邮件群发、群聊天、广播
d、路由模式:消息生产者将消息发送给交换机按照路由判断,路由是字符串,当前产生的消息携带路由字符,交换机根据路由的key,只能匹配上路由key对应的消息队列,对应的消费者才能消费消息;应用场景:错误通知、客户通知
e、topic主题模式(路由模式的一种):星号*井号#代表通配符,*匹配不多不少恰好1个词,#匹配一个或多个词;相当于在路由模式上添加了模糊匹配
2、RabbitMQ交换机模式
a、广播式交换器类型,即fanout模式:该类交换器不分析所接收到消息中的RoutingKey,默认将消息转发到所有与该交换器绑定的队列中去;转发效率最高,但是安全性较低,消费者应用程序可获取本不属于自己的消息;一对多
b、直接式交换器类型,即direct模式:该类交换器需要精确匹配RoutingKey与BindingKey;转发效率较高,安全性较好,但是缺乏灵活性,系统配置量较大
c、主题式交换器,即topic模式:该类交换器通过消息的Routing Key与Binding Key的模式匹配,将消息转发至所有符合绑定规则的队列中,采用模糊匹配
d、headers模式:根据消息的headers来匹配对应的队列,在消息接收回调中指定headers, 可以是Map<String, Object>、String可变数组类型的keys等