面试题答案
一键面试- 同步发送
- 特点:消息发送方发出消息后,会阻塞等待Broker的响应,直到收到发送成功或失败的结果。这种方式能确保消息发送的可靠性,因为只有在收到明确的成功响应后才会继续执行后续代码。
- 适用场景:对消息可靠性要求极高,且不希望丢失任何消息的场景,例如金融交易中的资金转移消息。在这类场景中,哪怕消息发送失败一次,都可能导致严重的后果,所以需要同步确认消息是否成功发送。
- 异步发送
- 特点:消息发送方发出消息后,不会阻塞等待Broker的响应,而是继续执行后续代码。当Broker处理完消息返回响应时,会通过事先设置的回调函数来通知发送方消息的发送结果。这种方式可以提高消息发送的效率,因为发送方不需要等待响应,可以继续发送其他消息。
- 适用场景:对消息发送实时性要求较高,但对可靠性要求相对稍低的场景,例如网站的日志记录。日志记录通常希望能够快速记录下来,不影响业务逻辑的执行,同时少量日志消息丢失对整体业务影响不大。
- 单向发送
- 特点:消息发送方发出消息后,不等待Broker的响应,也没有回调函数来确认消息是否发送成功。这种方式的发送速度最快,但无法保证消息一定能成功发送到Broker。
- 适用场景:对消息可靠性要求较低,且对发送速度要求极高的场景,例如一些监控指标的上报。监控指标数据通常量很大,少量数据丢失对整体监控影响较小,而快速发送这些数据以便及时获取系统状态更为重要。