use of com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer in project uavstack by uavorg.
the class RocketMQConsumer method initConsumer.
private DefaultMQPushConsumer initConsumer(QueueInfo queueInfo) {
DefaultMQPushConsumer dmpc = new DefaultMQPushConsumer(consumerConfig.getComsumerGroup());
/**
* 设置Consumer第一次启动是从队列头部开始消费还是队列尾部开始消费<br>
* 如果非第一次启动,那么按照上次消费的位置继续消费
*/
dmpc.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
dmpc.setNamesrvAddr(consumerConfig.getNamingServer());
if (consumerConfig.getPullBatchSize() >= 0) {
dmpc.setPullBatchSize(50);
}
// subscribeTopics
subscribeTopics(dmpc, queueInfo);
// 配置是否是单线程的consumer监听,因为在处理事务的时候,使用actor模式,需要单线程处理那些数据库写的请求
if (consumerConfig.getConsumeThreadMax() != null && consumerConfig.getConsumeThreadMax() > 0) {
dmpc.setConsumeThreadMax(consumerConfig.getConsumeThreadMax());
}
if (consumerConfig.getConsumeThreadMin() != null && consumerConfig.getConsumeThreadMin() > 0) {
dmpc.setConsumeThreadMin(consumerConfig.getConsumeThreadMin());
}
// 进行空值测试,如果没有填写queue类型一律按照queue信息算
if (MQFactory.QueueType.TOPIC.equals(queueInfo.getQueueType())) {
dmpc.setMessageModel(MessageModel.BROADCASTING);
}
return dmpc;
}
Aggregations