Hystrix实现MQ延迟消费

使用Hystrix实现延迟消费

背景: 一分钟内要消费100万条数据,大量并发使服务器CPU、内存、网络等 在短时间内存急剧上升,如果这100万条数据,每条有都需要落库,或者操作数据库,对数据库影响比较大,所以要进行延迟消费。
表现: 处理100万条数据时,都要调后端的每个接口或者某个方法,或者 出现跨系统调用,对别的系统也有影响。
目的: 原本1–2分钟内消费完100万条数据;调整30分钟或者1小时内消费完;
步骤:

1.依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
            <version>1.4.2.RELEASE</version>
        </dependency>
  1. 启动类
    @EnableHystrix
    @EnableHystrixDashboard在这里插入图片描述
  2. 方法增加配置 hystrix 注解配置
    可以调节线程池大小、队列长度、线程存活时间
    @HystrixCommand(commandKey ="getUserBaseInfoByUserName",groupKey="getUserBaseInfoByUserNameGroup",
            threadPoolKey="getUserBaseInfoByUserName",
            threadPoolProperties = {
                    @HystrixProperty(name = "coreSize", value = "2"),//线程池大小
                    @HystrixProperty(name = "maxQueueSize", value = "1000000"),//最大队列长度
                    @HystrixProperty(name =  "keepAliveTimeMinutes", value = "2") },//线程存活时间
            commandProperties = {
            @HystrixProperty(name = "execution.isolation.strategy",value = "THREAD"),//执行策略: 多线程
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "60000" )//超时时间
})
    @Override
    public ResponseBody getUserBaseInfoByUserName(String userName) throws Exception{
        try{
            if(checkParams() && StringUtils.isNotBlank(userUrl) && StringUtils.isNotBlank(userName)){
                // 组装参数
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.FFF");
                String requestTimestamp = sdf.format(new Date());
                String sign = MD5Util.getSign(appCode, businessId, requestTimestamp, safetyKey, userName);

                String url = userUrl.concat("/" + userName);
                ...........................................................................................................................................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值