发送消息的方式
本文介绍发送消息方式
发送并忘记(fire-and-forget)
把消息发送给服务器,默认为 异步发送,但并不关心它是否正常到达,会存在消息丢失的问题。
异步发送
异步发送 不会 阻塞当前线程 ,即:不会等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。
调用发送方法时,指定一个 回调函数,服务器在返回响应时调用该函数
这样就算是异步发送,也知道消息的发送情况,然后需求,在回调函数中 记录日志 或者 重新发送
优点
虽然异步处理 不能实时响应,但是处理复杂业务场景,多数情况都会使用异步处理。
异步可以解耦业务间的流程关联,降低耦合度;
降低接口响应时间,例如用户注册,异步生成相关信息表;
异步可以提高系统性能,提升吞吐量;
流量削峰即把请求先承接下来,然后在异步处理;
异步用在不同服务间,可以隔离服务,避免雪崩;
同步发送
一条消息发送之后,会 阻塞当前线程, 直至返回 ack。由于 send 方法返回的是一个 Future 对象,调用其 get() 方法进行等待,就可以知道消息是否发送成功