消息系统内有两个角色:消费者和生产者
需求是生产者产生了一个业务内容,需要给消费者,这里可以引入两种方式来处理:
1. 生产者直接推内容给消费者(代表:Apache Flume)
(1)优点:
i. 代码开发方便。
(2)缺点:
i. 生产者决定内容推送速率,不同消费速率的消费者不好处理。
ii. 如果生产者推送内容速度大于消费者消费速率时,消费者无法控制,可能会崩溃。
2. 生产者推消息,消费者从生产者拉取内容(代表:Kafka)
(1)优点:
i. 消费者可以自主决定时否批量从生产者拉取数据。
(2)缺点:
i. 代码开发略复杂。
ii. 如果一直没有消息推送,消费者会不停轮询生产者。不过可以通过配置轮询间隔来解决这个问题
综上建议是采用方案2 生产者推消息,消费者从生产者拉取内容