rocketmq学习资料,rocketmq入门

大家好,今天小编关注到一个比较有意思的话题,就是关于rocketmq学习资料的问题,于是小编就整理了3个相关介绍rocketmq学习资料的解答,让我们一起看看吧。
RocketMQ事务消息可以用来解决分布式事务吗?
RocketMQ 的事务消息并不是用于解决业务分布式事务,当然可以基于MQ实现最终一致性。RocketMQ 实现的事务消息的基本思路其实就是一次分布式事务一致性的经典实现。
RocketMQ 事务消息的目的是确保业务与消息发送这两个步骤实现一致性,即要么都成功,要么都失败,请看下面一段伪代码:
public Map createOrder(OrderDto orderInfo) { // 开始数据库事务
// step1:组装业务
orderMapper.insert(order);
//发送消息,以便订单系统的下游能够根据该订单信息,完成其后续流程,例如通知物流系统发货等
producer.send(msg);
} // 提交事务或回滚事务(例如数据库发生唯一性约束等错误,或者消息发送后突然宕机,导致该事务无法提交)
那现在就有可能出现一个问题:订单落数据库与消息发送这两个分布式操作(一个操作本地数据库,另外一个通过网络向消息中间件发送消息)如何保证要么成功,要么失败呢?这就是 RocketMQ 引入事务消息的目的。
rocketmq这种思路起源于kafka,基于已有开源软件,算侵权吗?
RocketMQ的设计理念参考与借鉴Kafka,但这并不能认为RocketMQ是基于已有开源软件,因为RocketMQ是使用Java语言实现,而Kafka的内核(Broker端,服务器代码)是使用Scala语言,即并没有直接使用原作者代码。通常说的基于已有开源框架,是指的直接对已有开源软件进行二次开发,这个就会受开源协议所限制。
开源项目的输出产物,即受保护的对象主要是指代码,文档等,设计思想不在其限制范围内。当然就算不上侵权了。
不算,kafka 使用Apache 的licence 是允许修改再发布的,何况仅仅是实现思路的借鉴,而且实现逻辑区别还是很大的关键的消失存储一个是分区式的分布式,一个是主从式的分布式,所以怎么说也够不上侵权,何况现在俩项目都是Apache 的开源项目
rocketmq消息push和pull区别?
对于任何一款消息中间件而言,消费者客户端一般有两种方式从消息中间件获取消息并消费。
严格意义上来讲,RocketMQ并没有实现PUSH模式,而是对拉模式进行一层包装,名字虽然是 Push 开头,实际在实现时,使用 Pull 方式实现。通过 Pull 不断不断不断轮询 Broker 获取消息。
当不存在新消息时,Broker 会挂起请求,直到有新消息产生,取消挂起,返回新消息。
这样,基本和 Broker 主动 Push 做到接近的实时性(当然,还是有相应的实时性损失)。
到此,以上就是小编对于rocketmq学习资料的问题就介绍到这了,希望介绍关于rocketmq学习资料的3点解答对大家有用。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.lnbtw.com/post/41132.html