关于rabbitmq:设置mq并发限制入库并发数

45次阅读

共计 719 个字符,预计需要花费 2 分钟才能阅读完成。

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)

正文完
 0