1.MQ的组件:
- 生产者:消息提供者
- 消费者:消息使用者
- MQ服务器:管理队列、消息及相关信息
- 消息:程序间通讯的数据
- 队列:消息存放的容器,消息是先进先出的
- 交换机:用于分发消息
2.RabbitMQ工作模式
2.1 简单模式
无交换机参与。实际工作中几乎用不到。生产者通过MQ将消息放入队列,队列发送给消费者。
2.2 工作队列
类似负载均衡。在多个消息的情况下,工作队列模式会将消息分发给不同的消费者,每个消费者会收到不同的消息, 并且根据处理消息的速度来接收消息的数量,进而让消费者程序发挥最大性能。适用于集群环境中做异步处理,能发挥每台服务器的性能。 高并发情况下,产出消息挤压,可水平扩容,增加消费者实例。
场景:12306的短信服务。
2.3 发布订阅
有交换机参与。生产者的消息,消费者均能接收到。 1.生产者不直接与队列绑定,而是将数据发至交换机 2.交换机用于将数据按某种规则送入与之绑定的队列,进而让消费者使用。 3.交换机将无差别的将所有消息送入与之绑定的队列,所有消费者拿到的消息完全相同。
场景:适用于数据大规模分发的情况。中国气象局提供气象信息,腾讯,网易拿到相同的气象信息。
2.4 路由模式
发布订阅模式的变种。交换机根据routing key有条件将数据筛选后发给消费者队列。 场景:日志。消费者是监控系统,error的错误日志就会放到消费者队列中。
2.5 主题模式
路由模式的升级版。在routing key上添加通配符,具有模糊查询。 *匹配单个关键字 #匹配所有关键字
能用路由不用主题。
2.6 RPC同步通信
该过程线层阻塞。虽然MQ是异步的,一般生产者将消息送至消息队列候不关心消费者什么时候消费, 但有的情况下需要得到消费者的反馈。该模式需要两个队列,没有固定的生产者、消费者。实际用得很少,因为有dubbo。
|