随笔分类 - RocketMq
摘要:转载: https://www.jianshu.com/p/c474ca9f9430
阅读全文
摘要:转载:https://blog.csdn.net/yankunhaha/article/details/100061337 如果消费进度保存在本地的话,那我们的docker环境怎么做到不重复消费 翻了下LocalFileOffsetStore其实也是先刷到内存的 如上。 那我看看下每5秒进行的持久话
阅读全文
摘要:生产线程池开始抛出一系列reject异常,具体日志如下。 项目整体请求量不大,所以怀疑个别任务的消费速度过慢导致,因这个线程池在项目各处大量分散使用,不能快速定位具体是哪个任务。 最后通过arthas定位到这个task。 暂时下掉相关逻辑问题得到解决。 第二天排查问题原因是有个http请求,没有设置
阅读全文
摘要:PullRequest.MessageQueue.BrokerName 根据PullRequest.MessageQueue得到brokerId,默认0或者用缓存中的suggest,每次消息拉取后会更新sugestBrokerId到缓存, BorkerName+brokerId在缓存(brokerA
阅读全文
摘要:1.groupName唯一性 2.queueId的作用 3.consumerOffset.json 当换一个consumerGroup: 从0开始消费 4.一个consumer会有多个线程去消费,多线程之间非有序(orderListener怎么有序?),多个consumer会负载queue(broa
阅读全文
摘要:关于mq食物以什么样的方式解决了什么样的问题可以参考这里: https://www.jianshu.com/p/cc5c10221aa1 上文中示例基于mq版本较低较新的版本中TransactionListener替换掉了TransactionCheckListener,整个流程有了一些改变,但还是
阅读全文
摘要:mq根据brokerName查找Broker地址的过程 mq根据MessageQueue查找Broker地址的唯一依据是brokerName,同一组Broker(M-S)他们的bokerName相同但brokerId不同,主服务器的brokerId为0,从服务器的brokerId大于0,rokcke
阅读全文
摘要:核心类: 消息消费到达主服务器后需要将消息同步到从服务器,如果主服务器Broker宕机后,消息消费者可以从从服务器拉取消息。 HAService:RocketMQ主从同步核心实现类 HAService$AcceptSocketService:HAMaster端监听客户端连接实现类 HAService
阅读全文
摘要:注意异常情况导致整个消费无限重试 阻塞消费 mq支持局部消息顺序消费,可以确保同一个消息消费队列中的消息被顺序消费。看下针对顺序消息在整个消费过程中做的调整: 队列负载: DefaultMQPushConsumerImpl#consumeOrderly决定是否是顺序消息, org.apache.ro
阅读全文
摘要:mq支持表达式过滤和类过滤两种模式,其中表达式又分为TAG和SQL92.类过滤模式允许提交一个过滤类到FilterServer,消息消费者从FilterServer拉取消息,消息经过FilterServer时会执行过滤逻辑。SQL92以消息属性过滤上下文,而TAG模式就是简单为消息定义标签。 pub
阅读全文
摘要:mq不支持任意的时间京都,如果要支持,不可避免的需要在Broker层做消息排序,加上持久化方面的考量,将不可避免地带来巨大的性能消耗,所以rocketMQ只支持特定级别的延迟消息。 在Broker短通过messageDelayLevel配置。实现类:org.apache.rocketmq.store
阅读全文
摘要:从前2节可以看到,一次消费后消息会从ProcessQueue处理队列中移除该批消息,返回ProcessQueue最小偏移量,并存入消息进度表中。那消息进度文件存储在哪合适呢? 广播模式:同一个消费组的所有消息消费者都需要消费主题下的所有消息,也就是同组内的消费者的消息消费行为是对立的,互相不影响,故
阅读全文
摘要:接上文的集群模式,监听器返回RECONSUME_LATER,需要将将这些消息发送给Broker延迟消息。如果发送ack消息失败,将延迟5s后提交线程池进行消费。 入口:ConsumeMessageConcurrentlyService#sendMessageBack 命令编码:RequestCode
阅读全文
摘要:在https://www.cnblogs.com/lccsblog/p/12249265.html中,PullMessageService负责对消息队列进行消息拉取,从远端服务器拉取消息后将消息存入ProcessQueue消息队列处理队列中,然后调用ConsumeMessageService#sub
阅读全文
摘要:回顾PullMessageService#run: 如果队列总没有PullRequest对象,线程将阻塞。 围绕PullRequest有2个问题: 1.PullRequest对象在什么时候创建并加入pullRequestQueue中以便唤醒PullMessageService县城 2.集群内多个消费
阅读全文
摘要:DefaultMessageStore#start 当新消息到达CommitLog是,ReputMessageService线程负责将消息转发给ConsumeQueue,IndexFile,如果Broker端开启了长轮询模式并且角色为主节点,则最终调用 方法唤起挂起线程,长轮询模式是的消息拉取能实现
阅读全文
摘要:RocketMQ并没有真正实现推模式,而是消费者主动想消息服务器拉取消息,推模式是循环向消息服务端发送消息拉取请求。 如果消息消费者向RocketMQ发送消息拉取时,消息未到达消费队列: 如果不启用长轮询机制消息并未达到消费队列,则会在服务端等待shortPollingTimeMills时间后再去判
阅读全文
摘要:看一下客户端收到消息后的处理: MQClientAPIImpl#processPullResponse private PullResult processPullResponse( final RemotingCommand response) throws MQBrokerException,
阅读全文
摘要:疑问:PullRequest何时添加? PullMessageService提供延迟添加与立即添加2种方式 疑问:PullRequest是在什么时候创建的呢? 1.上上图中 PullRequest pullRequest = this.pullRequestQueue.take(); this.pu
阅读全文

浙公网安备 33010602011771号