2:消息中间件种类
消息中间件种类。 ActiveMQ:并发高的情况下不优秀,早期比较流行。 Kafka:只关注于高并发,性能好,但是对数据重复、丢失、错误验证要求不高。 RocketMQ:纯Java开发,借鉴于Kafka,阿里开源,维护复杂。 RabbitMQ:基于Frlang语言开发,可靠、安全、稳定(新能没有Kafuka好但是也不差)。
![](https://img2020.cnblogs.com/blog/977993/202003/977993-20200330213847836-1056057076.jpg)
为什么选择RabbitMQ? 跨语言。数据可靠性高。 SpringAMQP整合了RabbitMQ,有丰富的API。 高性能。 为啥高性能? 因为使用了Erlang语言,而Erlang语言是广泛用于交换机开发的语言。Erlang语言有原生Socket一样的延迟底。 什么是AMQP协议? AMQP(高级消息队列协议):为面向中间件设计的应用层协议。
![](https://img2020.cnblogs.com/blog/977993/202003/977993-20200330213921816-1216107539.jpg)
AMQP概念: Server:又称Broker,接受客户端连接。 Connection:应用程序和Broker的连接。 Channel:网络信道,消息传递的通道,客户端可以建立多个Channel。 Message:传递的数据。由Properties和Body组成。通过设置Properties可以设置消息优先级、延迟投递等特性。 Virtual host:虚拟主机。用于在逻辑层面上隔离(类似于包名)。一个虚拟主机里面可以有多个交换机和消息队列,但是不能有相同的。 Exchange:交换机,接收消息,绑定消息队列。 Bindin:交换机和消息对类需要绑定,绑定中包含一个 routing key Routing key :路由规则,可以用来确定一个消息的传递路由。 Queue:消息队列。消费者监听并消费。 RabbitMQ消息是如何流转的?
![](https://img2020.cnblogs.com/blog/977993/202003/977993-20200330214004215-1294666984.jpg)