1.rabbitmq 的使用场景有哪些?
- 解耦
- 削峰
- 异步处理
- 分布式应用之间的通信
2. rabbitmq 有哪些重要的角色?
- 生产者
- 消费者
- 代理
3. rabbitmq 有哪些重要的组件?
- Connection: Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。
- Channel:Channel是我们与RabbitMQ打交道的最重要的一个接口,我们大部分的业务操作是在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等。
- Queue:Queue(队列)是RabbitMQ的内部对象,用于存储消息。
- Message:由Header和Body组成,Header是由生产者添加的各种属性的集合,包括Message是否被持久化、由哪个Message Queue接受、优先级是多少等。而Body是真正需要传输的APP数据。
- Exchange(交换器):用于接受、分配消息。Exchange包含4种类型:Direct, Topic, Fanout, Headers。不同的类型,他们如何处理绑定到队列方面的行为会有所不同。
- direct类型的Exchange路由规则也很简单,它会把消息路由到那些binding key与routing key完全匹配的Queue中。
- fanout类型的Exchange路由规则非常简单,它会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中。
- Topic类型前面讲到direct类型的Exchange路由规则是完全匹配binding key与routing key,但这种严格的匹配方式在很多情况下不能满足实际业务需求。topic类型的Exchange在匹配规则上进行了扩展,它与direct类型的Exchage相似,也是将消息路由到binding key与routing key相匹配的Queue中,但这里的匹配规则有些不同
- RPC:在一个大型的公司,系统由大大小小的服务构成,不同的团队维护不同的代码,部署在不同的机器。但是在做开发时候往往要用到其它团队的方法,因为已经有了实现。但是这些服务部署不同的机器上,想要调用就需要网络通信,这些代码繁琐且复杂,一不小心就会写的很低效。RPC协议定义了规划,其它的公司都给出了不同的实现。现在我们的客户端、服务端都是消息发布者与消息接收者。
4. rabbitmq 中 vhost 的作用是什么?
- 虚拟主机vhost,感觉他主要是起到了消息隔离的作用
-
vhost本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、绑定、交换器和权限控制。