消息中间件的作用:
- 让程序之间解耦
- 异步消息处理
- 流量削峰
AMQP和JMS:
- AMQP是一种协议,用来规范数据在客户端和服务端年之间传递的标准
- JMS即Java消息服务,是一个Java平台关于面向消息中间件的API
- JMS是定义了统一接口,对消息操作进行统一,AMQP通过协议统一数据交互格式。
- JMS限定了必须使用java语言,AMQP只是协议,不是实现方式,因此是跨语言的
- JMS规定了两种消息模型(queue,topic);AMQP的消息模型更加丰富
RabbitMQ特点:
- Erlang开发
- 可靠性:数据持久化、传输确认、发布确认
- 灵活的路由
- 消息集群
- 高可用
- 多协议
- 多语言客户端
- 管理界面
- 跟踪机制
Rabbit基本概念:
- Publisher:生产者,向交换器发布消息的客户端应用程序
- Consumer: 消费者
- Broker:消息队列服务器的实体
- Virtual Host:虚拟主机(类似数据库),RabbitMQ默认的vhost是/
- Exchange:交换机 生产者将消息发送给交换机,交换器再分发给队列
- Queue:队列,必须和交换机绑定
- Virtual Host:虚拟主机(类似数据库),RabbitMQ默认的vhost是/
- Connection:连接
- Channel:信道
- Consumer:消费者
- Message:消息,消息是不具名的,它由消息头和消息体组成。消息体是不透明的,而消息头则是由一系列的可选属性组成,这些属性包括routing-key(路由键,告诉路由器接收什么消息,不接收什么消息)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需要持久性存储等)。