网站推广策划的思路包括哪些内容,大沥南庄网站建设,html5个人主页,室内设计资料网站RocketMQ工作流程
在RocketMQ当中#xff0c;当消息的生产者将消息生产完成之后#xff0c;并不会直接将生产好的消息直接投递给消费者#xff0c;而是先将消息投递个中间的服务#xff0c;通过这个服务来协调RocketMQ中生产者与消费者之间的消费速度。
那么生产者是如何…RocketMQ工作流程
在RocketMQ当中当消息的生产者将消息生产完成之后并不会直接将生产好的消息直接投递给消费者而是先将消息投递个中间的服务通过这个服务来协调RocketMQ中生产者与消费者之间的消费速度。
那么生产者是如何投递自己的消息呢这里向大家介绍一下RocketMQ当中的一个重要组件topic。Topic故名思意主题嘛消息生产者在生产投递消息的过程中可以通过设定不同的topic将自身所生产的消息投递到对应的topic当中。举一个通俗易懂的例子我们可以把topic想象成是一个货物仓库而topic是一个货架对应的种类的物品要放到对应的货架上。
消费者则根据自身的需求通过不同的topic来获取自己想要消费的消息。
RocketMQ事务消息的实现
RocketMQ事务消息的实现其实也是非常的简单我们只需要弄清一个原理即可即分阶段实现。在RocketMQ当中想要实现分阶段实现这一功能首先要实现一个机制就是TransactionListener--事务监听机制。事务监听机制有两个重要的方法即executeLocalTransaction(执行本地事务)checkLocalTransaction(回查本地事务)。
RocketMQ事务消息的流转过程其实也是十分简单。首先消息事务生产端会生生一个half消息即半消息和正常一样生产者也是要将这个消息投递到Broker当中但这个Broker当中用来接收这个半消息的topic和普通的topic并不一样我们将这种用来接收生产者生产的half消息投递的topic称为half topic。特别注意,half topic对消费者来说是不可见的即消费者无法直接从half topic当中获取信息进行消费。
那么如何将half topic当中的消息转移到正常的topic当中让消费者能够消费呢
首先当Broker当中的半topic接收到这个半消息后Broker便会返回一个ack给生产者生产者接收到这个ack后便会开始执行本地事务。执行本地事务后会产生两种结果一种执行成功一种执行失败。
事务执行成功
当本地事务执行成功之后生产者便会将本地事务执行成功的状态提交个Broker当Broker接收到这个信息时便会将半topic当中的半消息给拿出来放到目标topic当中供消费者能够进行正常消费。
事务执行失败
若当本地事务执行的过程中产生异常或者没有执行成功生产者则会将事务进行回滚并会给Broker返回一个Rollback状态当Broker接收到Rollback这个状态时便会将半topic中的消息进行逻辑删除并且RocketMQ还会通过异步的方式单开一个线程用来接收这种被Broker逻辑删除的消息并将这些消息进行清除。
事务执行成功但无状态
若本地事务执行成功但由于网络波动本地事务的执行状态未及时反馈给生产者或生产者迟迟未接收到本地事物的状态即处于无状态或中间态的情况下Broker便会启动一个定时回查任务。Broker会调用事务监听器当中的checkTransaction接口来查看当前事务的状态根据回查的状态结果来进行相应的操作。这个事务回查机制有次数限制默认回查十五次超过十五次后便不会再来回查本地事务的状态了。
总结
以上便是RocketMQ中事务消息的整个流程笔者也将流程图置于下方希望能够给各位小伙伴带来帮助。笔者小中大厂均有面试经验目前正在从事全栈开发工作主要分享java全栈开发知识与相关的面试真题希望能够给大家带来帮助同大家共同进步。