请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于撮合核心服务重启重新撮合的疑问

请教下老师,本节视频末尾处演示如果撮合核心服务器重启了,重启完成后此时收到排队机的一个新的广播包,那撮合核心经过比对发现packNo跳包,则会拉取之前的委托包,如果这些委托包在上次重启之前已经撮合过了,此时又重新拉取,是不是会重复撮合了,这个地方需要做幂等处理吧,是否在后续章节有处理呢?

正在回答 回答被采纳积分+3

1回答

Gudy 2023-10-20 15:45:46

撮合会先校验packNo,如果校验异常,这个packNo的委托包不会进撮合,这样不会有重复撮合的问题

0 回复 有任何疑惑可以回复我~
  • 提问者 慕少4057723 #1
    可能我上述没有说清楚,目前课程中对于packNo的判断代码如下:
    
    private long lastPackNo = -1;
    
    //NACK
            long packNo = cmdPack.getPackNo();
            if (packNo == lastPackNo + 1){
    
            }else if (packNo <= lastPackNo){
    
            }else {   
                //跳号
            }
    
    
    如果撮合重启之后 lastPackNo  重新赋值为 -1,那么新到的包就会被识别为跳包了,就会重新拉取历史包,这里的      lastPackNo  是否应该是从数据库获取每次更新到数据库中?否则每次只要一重启lastPackNo 就是-1哦
    回复 有任何疑惑可以回复我~ 2023-10-20 16:26:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信