消息队列的作用
1.消峰:当业务处在高峰期时,将数据先暂存,利用这个缓冲机制,再慢慢处理。
2.解耦:低耦合的业务可以延后处理。解耦带来的好处就是:提高系统的可用性
3.消息分发:发送消息给多个接收端接收。
基本概念
主要由三块组成:生产者(发送消息)
消费者(接收处理消息)
broker(存储消息)
特性
发布与订阅:
发布:某个生产者向某个topic 发送消息,
订阅:某个消费者订阅某个topic带有某些tag的信息。从而消费生产者生产的信息。
消息顺序:
某些情况下需要保证消息的消费顺序,例如 创建订单,付款,配送。消费要按照这种顺序才是合理。但是多个订单又能同时消费。
顺序消息分为全局顺序和分区顺序。
全局顺序:对于指定的一个 Topic,所有消息按照严格的先入先出(FIFO)的顺序进行发布和消费。 适用场景:性能要求不高,所有的消息严格按照 FIFO 原则进行消息发布和消费的场景
分区顺序:对于指定的一个 Topic,所有消息根据 sharding key 进行区块分区。 同一个分区内的消息按照严格的 FIFO 顺序进行发布和消费。 Sharding key 是顺序消息中用来区分不同分区的关键字段,和普通消息的 Key 是完全不同的概念。 适用场景:性能要求高,以 sharding key 作为分区字段,在同一个区块中严格的按照 FIFO 原则进行消息发布和消费的场景。