栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

生产者(发出syncAsk请求)和消费者(有xxxAsk的监听,里面有实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

生产者(发出syncAsk请求)和消费者(有xxxAsk的监听,里面有实现)

home服

application.xml

 

        
            
        

        
            
        

        
            
        

    

home服发出请求

        // 异步发送给cache服
        NetContext.getConsumer().asyncAsk(BattleScoreAsk.valueOf(uid, score), BattleScoreAnswer.class, uid)
                .whenComplete(answer -> {
                    logger.info("c[{}][{}]玩家战斗结果异步回调", gatewayAttachment.getUid(), gatewayAttachment.getSid());

                    // 战斗过后如果上了排行榜,则奖励一下,每一分值一个金币,半个钻石
                    if (answer.isRankReward()) {
                        var currencyPo = player.getCurrencyPo();
                        currencyPo.setGold(currencyPo.getGold() + score);
                        currencyPo.setGem(currencyPo.getGem() + score / 2);
                        addPlayerExp(player, score);

                        playerEntityCaches.update(player);

                        NetContext.getRouter().send(session, BattleResultResponse.valueOf(score), gatewayAttachment);
                        NetContext.getRouter().send(session, CurrencyUpdateNotice.valueOf(currencyPo.toCurrencyVO()), gatewayAttachment);
                    }
                });
cache服
    @PacketReceiver
    public void atBattleScoreAsk(Session session, BattleScoreAsk ask) {
        var playerId = ask.getPlayerId();
        var score = ask.getScore();

        // 如果没有上榜,直接返回;上榜,则将当前成绩插入数据库
        if (score <= minScore && rankLimit >= RANK_SIZE) {
            NetContext.getRouter().send(session, BattleScoreAnswer.valueOf(false));
            return;
        }

        // 获取一个分布式自增唯一id
        var id = MongoIdUtils.getIncrementIdFromMongoDefault(ScoreRankEntity.class);
        // 插入数据库
        OrmContext.getAccessor().insert(ScoreRankEntity.valueOf(id, playerId, TimeUtils.now(), score));
        NetContext.getRouter().send(session, BattleScoreAnswer.valueOf(true));
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号