随笔分类 -  RocketMq

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