RocketMq 消费者

总结一下RMQ消费者的一些问题。

RMQ 消费者
    消息拉取方式
        PUSH方式
            DefaultMQPushConsumer
            系统封装(消息获取方式)
                PullMessageService
                    未处理消息个数超过1000个或消息大小超过100M就延迟拉取
                    顺序消费的时候,拉取消息前需要获取消息消费处理队列的锁
                    消息消费封装成PullCallback,用Netty的ChannelFutureListener异步回调
                    消费者订阅信息的tag进行过滤下
                    把拉取到的消息放到消息消费处理队列中
                    提交消息消费请求到ConsumeMessageService中
                    broker端会返回消息下一个拉取偏移量
            自动调用监听器回调处理
        PULL方式
            DefaultMQPullConsumer
            自己封装
            消息回调由用户控制(需要开发回调操作)
    消息消费模式
        集群模式
            MessageModel.CLUSTERING
            单个consumer消费
        广播模式
            MessageModel.BROADCASTING
            多个Consumer消费
    消息消费方式
        并行消费
            ConsumeMessageConcurrentlyService
        顺序消费
            ConsumeMessageOrderlyService
                获取MessageQueue队列的锁(MessageQueueLock)
                获取消息消费处理队列ProcessQueue的锁,这里是可重入锁
                调用消息业务处理逻辑
                处理消息消费结果
    消费负载均衡
        客户端进行
        按消息队列和消费者进行
        核心类:RebalanceService 
        分级负载:整体安装GROUP,TOPIC负载按照consumer实例
    负载均衡
        广播负载均衡
            广播是需要处理主题下的所有消息队列
        集群负载均衡
            集群是需要处理根据负载均衡策略产生的队列
    在重复消费的问题
        集群模式下消息消费失败会进行重试
            消息发送到broker
            broker会为每个消费组设置一个retry topic
        更新MessageQueue的消息消费偏移量
            先更新到本地缓存中, 
            后续有定时任务会进行消费进度的持久化

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值