四. 如何保证消息不丢失(可靠传递)
如何保证消息不丢失(可靠传递)
- 在生产阶段,消息队列通过请求确认机制,来保证消息的可靠传输。也就是 producer 将消息发到 broker 后,broker 会返回一个确认响应,表明收到了消息,如果 producer 收到了这个确认响应,就表示消息在生产阶段没有丢失。
- 在存储阶段,如果 broker 出现故障,比如服务器宕机,就可能丢失消息,解决办法是:对于单个节点的 broker,在收到消息后,将消息先写入到磁盘,然后再给 producer 返回确认响应;对于多个节点组成的集群,可以将它配置为至少将消息发送到2个以上的节点,再给 producer 返回确认响应,这样即使某个节点宕机,其他节点也可以顶替。
- 在消费阶段,也是通过请求确认机制,来保证消息的可靠传输。也就是消费端收到消息,并且执行完所有消费业务逻辑后,再返回确认响应。