问题点
同样,在介绍消息发送流程之前,先抛出几个问题
- 消息发送有哪几种方式?
- producer是如何查找、维护topic对应的路由信息的?
消息发送的实现类为DefaultMQProducer
消息发送方式
先看下DefaultMQProducer
中有哪些发送方法
大体可分为三种
- send(Message)为同步发送
- send(Message,SendCallback)为异步发送,SendCallback是发送成功后的异步回调函数
- sendOneway(Message,MessageQueue)为单向发送,
这三种发送方式又有什么区别呢?
- 同步发送需要发送端同步等待MQ服务器响应,保证了消息发送的可靠性,因为是同步等待,所以耗时较多
- 异步发送消息后,发送端不再阻塞等待响应,可以处理、发送其他消息,等待服务端消息确认后异步回调发送端设置的回调接口,耗时较小,消息可靠性也有保证
- 单向发送,不在乎消息发送的可靠性,发送端只管发消息,不在乎消息是否到达broker端,也不在乎响应结果,适合一些对可靠性没有要求的场景,比如日志收集,耗时最小
看到这里,开头的问题1也