1.最新理解
使用一个配置类就可以指定使用什么类型的队列
@Bean 产生一个对象归Spring管理。产生这个Bean对象的方法只会调用一次,然后就会放入IOC容器归Spring 管理
@Bean("chooseExchange")
public Exchange directExchange() {
return ExchangeBuilder.directExchange("amq.direct").durable(true).build();
}
@Bean("choosePlan")
public Queue directQueue(){
return new Queue("choosePlan", true, true, true);
}
2.原理

RabbitMq拿到消息之后不是直接就放进队列中的,他是先交给交换机,(Exchange(交换器) 有4种类型,不同的类型对应着不同的路由策略:direct(默认),fanout, topic, 和 headers)交换机再根据预先设定的不同绑定( Bindings )策略,来确定要发给哪个队列。
3.有四种模式:fanout,direct,topic,header
fanout:广播模式,消息来了会交给所有队列
direct:指定队列模式,消息来了交给指定队列,其他的队列都收不到
topic:那么这里的主题模式是什么意思呢? 如图所示消息来源有: 美国新闻,美国天气,欧洲新闻,欧洲天气。
如果你想看 美国主题: 那么就会收到 美国新闻,美国天气。
如果你想看 新闻主题: 那么就会收到 美国新闻,欧洲新闻。
如果你想看 天气主题: 那么就会收到 美国天气,欧洲天气。
如果你想看 欧洲主题: 那么就会收到 欧洲新闻,欧洲天气。
- topic:匹配订阅模式,使用正则匹配到消息队列,能匹配到的都能接收到。
- headers:与 direct 类似,只是性能很差,此类型几乎用不到。
4.RABBIT有什么好处
削峰:防止过多 直接落到数据库
异步:非必要的业务逻辑以异步的方式运行,加快响应速度
解耦

本文详细解析了RabbitMQ中队列与交换机的工作原理,介绍了如何通过配置类指定不同类型的队列,探讨了四种交换机类型:fanout、direct、topic和headers的特性与应用场景,以及RabbitMQ在削峰填谷、异步处理和系统解耦方面的作用。
1931

被折叠的 条评论
为什么被折叠?



