消息中间件
-
使用消息中间件的作用
- 解耦
- 削峰
- 异步
- 顺序保证
- 冗余(存储)
-
RabbitMQ的特点
- 可靠性
- 灵活的路由
- 扩展性
- 高可用
- 多语言客户端
- 插件机制
- 多协议(主要还是AMQP
相关概念
- Producer:生产者,投递消息的一方
- Consumer:消费者,接收消息的一方
- Broker:RabbitMQ的服务节点
- Queue:队列,是RabbitMQ的内部对象,用于存储消息。RabbitMQ中消息只能存储在队列中,这一点和Kafka这种消息中间件相反。Kafka将消息存储在topic(主题)这个逻辑层面,而相应的队列逻辑只是topic实际存储文件中的位移标识。RabbitMQ 的生产者生产消息井最终技递到队列中,消费者可以从队列中获取消息并消费。
多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊 CRound-Robin ,即轮询)
给多个消费者进行处理,而不是每个消费者都收到所有的消息井处理,如图所示
RabbitMQ 不支持队列层面的广播消费,如果需要广播消费,需要在其上进行 次开发,处理逻辑会变得异常复杂,同时也不建议这么做。 - Exchange:交换器。
参考资料:RabbitMQ实战指南