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

来源:11-5 UDP NACK 广播与接收-5

慕少4057723

2023-10-20

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

写回答

1回答

Gudy

2023-10-20

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

0
1
慕少4057723
可能我上述没有说清楚,目前课程中对于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
共1条回复

SpringCloud+Vertx+Disruptor 撮合交易系统实战

独家掌握金融业务系统知识,培养金融IT工程师核心竞争力

469 学习 · 145 问题

查看课程