1) 利用mq做限流, 正当的入库工夫
2) 加重数据库的压力
3) 保障我的项目的稳定性
【生产场景】
多个用户同时excel导入数据, 采纳多线程保留数据, 对数据库压力过大,
把数据间接放到mq里
/**
* 监听核验身份队列
*
* @param tag
* @param msg
* @param channel
* @throws IOException
*/
@RabbitHandler
@RabbitListener(queues = Constant.QueueName.CHECK_CARD_NO)
public void receiverCardNo(@Header("amqp_deliveryTag") long tag, String msg, Channel channel) throws IOException {
try {
logger.info("核验身份队列:{},队列内容:{}", Constant.QueueName.CHECK_CARD_NO, msg);
queueService.receiverCardNo(msg);
} catch (Exception ex) {
throw new CvsException(ResCode.FAIL_MQ_ERROR, ex);
} finally {
channel.basicAck(tag, false);
}
}
手动配置为35,同时启动35个线程解决入库操作,大小依据cpu数配置就能够
@RabbitListener(queues = Constant.QueueName.CHECK_CARD_NO, concurrency = “35”)
默认分支, 因该是2
@RabbitListener(queues = Constant.QueueName.CHECK_CARD_NO)
发表回复