中间件这个目录本想记录学习中间件优秀的设计和编程思想,能在实际项目中借鉴下实现思路。

    摘抄自《RocketMQ技术内幕》

    RocketMQ支持3种消息发送方式:同步(sync)、异步(async)和单向(one way)。 1)同步:发送者向RocketMQ执行发送消息API时,同步等待,直到消息服务器返回发送结果。 2)异步:发送者向RocketMQ执行发送消息API时,指定消息发送成功后的回调函数,调用消息发送API后,立即返回,消息发送者线程不阻塞,直到运行结束,消息发送成功或失败的回调任务在一个新的线程中执行。 3)单向:消息发送者向RocketMQ执行发送消息API时,直接返回,不等待消息服务器的结果,也不注册回调函数。简单地说,就是只管发,不在乎消息是否成功存储在消息服务器上。

    实际项目中经常有这种场景,触发某个任务,同步的话影响性能,单向的话不可靠,所以该任务只能是异步执行,但是如何保证可靠性呢?RocketMQ 用到的是回调函数。目前我们公司异步任务都是不可靠的,没有看到有做可靠性的保障措施,所以 RocketMQ 的这个思路很有借鉴意义。

    workflow:
    跟 RocketMQ 学消息可靠性 - 图1