RocketMQ - 8 消费者 push和pull模式,配置参数

PushConsumer配置

consumerGroup DEFAULT_CONSUMER Consumer 组名,多个 Consumer如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组
messageModel CLUSTERING 消息模型,支持以下两种 1、集群消费 2、广播消费
consumeFromWhere CONSUME_FROM_LAST_OFFSET Consumer 启动后,默认从什么位置开始消费
allocateMessageQueueStrategy AllocateMessageQueueAveragely Rebalance 算法实现策略
subscription {} 订阅关系
messageListener 消息监听器
offsetStore 消费进度存储
consumeThreadMin 10 消费线程池数量
consumeThreadMax 20 消费线程池数量
consumeConcurrentlyMaxSpan 2000 单队列并行消费允许的最大跨度
pullThresholdForQueue 1000 拉消息本地队列缓存消息最大数
pullInterval 0 拉消息间隔,由于是长轮询,所以为 0,但是如果应用为了流控,也可以设置大于 0 的值,单位毫秒
consumeMessageBatchMaxSize 1 批量消费,一次消费多少条消息
pullBatchSize 32 批量拉消息,一次最多拉多少条

PullConsumer配置

consumerGroup DEFAULT_CONSUMER Consumer 组名,多个Consumer 如果属于一个应用,订阅同样的消息,且消费逻辑一致,则应该将它们归为同一组
brokerSuspendMaxTimeMillis 20000 长轮询,Consumer 拉消息请求在 Broker 挂起最长时间,单位毫秒
consumerTimeoutMillisWhenSuspend 30000 长轮询,Consumer 拉消息请求在 Broker 挂起超过指定时间,客户端认为超时,单位毫秒
consumerPullTimeoutMillis 10000 非长轮询,拉消息超时时间,单位毫秒
messageModel BROADCASTING消息模型,支持以下两种 1、集群消费 2、广播消费
messageQueueListener 监听队列变化
offsetStore 消费进度存储
registerTopics [] 注册的 topic 集合
allocateMessageQueueStrategy AllocateMessageQueueAveragely Rebalance 算法实现策略

Push和Pull模式

push和pull模式在前面已经有说过了。push是broker主动去向consumer推送消息,他们之间只需要保持长连接即可。pull是consumer主动去向broker拉取消息。
push就是我们前面讲到的模式MQPushConsumer就是push模式。
pull模式将不会给出例子,因为比较繁琐。pull模式有两种做法,一种自己主动记录每次获取消息的offset,下次再次获取从这次的最大下标+1去获取,期间多长时间执行拉取,由自己实现。第二种由rocketmq帮我们完成,consumer消费完后提醒broker更新最新拉取消息的offset,多长时间拉取一次可以由设置属性让rocketmq帮我们完成。
因为pull模式是间隔一定时间去broker拉取下标从多少开始的一批消息。不可避免的容易出现重复消息的事情,所以如果使用pull,要多加一部消息去重的策略。具体的pull示例,可以参考rocketmq的example中的simple包,里面有对两种做法进行示例

猜你喜欢

转载自blog.csdn.net/qq_32020035/article/details/82109547