请问流数据订阅中,为什么每一次触发handler函数好像有最大1024条的限制?

n=1000000
tmpTrades = table(n:0, colNames, colTypes)
lastMinute = [00:00:00.000]
colNames = `time`sym`vwap
colTypes = [MINUTE,SYMBOL,DOUBLE]
enableTableShareAndPersistence(table=streamTable(n:0, colNames, colTypes), tableName="vwap_stream")
go

def calcVwap(mutable vwap, mutable tmpTrades, mutable lastMinute, msg){
tmpTrades.append!(msg)
curMinute = time(msg.time.last().minute()*60000l)
t = select wavg(price, qty) as vwap from tmpTrades where time < curMinute, time >= lastMinute[0] group by time.minute(), sym
if(t.size() == 0) return
vwap.append!(t)
t = select * from tmpTrades where time >= curMinute
tmpTrades.clear!()
lastMinute[0] = curMinute
if(t.size() > 0) tmpTrades.append!(t)
}
subscribeTable(tableName="trades_stream", actionName="vwap", offset=-1, handler=calcVwap{vwap_stream, tmpTrades, lastMinute}, msgAsTable=true)

我的订阅是这样的,但是发现,即使上游的发布表vwap_stream的数据注入是5000条每批次,但是每次触发handler的最大条数是1024条,请问是怎么回事?

请先 登录 后评论

1 个回答

Jason Tang - 时序数据库技术支持

配置项有一个关于流数据发布过程中限制一个消息块中最多的记录条数,默认值为1024。该配置参数的名字是maxMsgNumPerBlock=1024

single单节点在dolphindb.cfg配置文件配置,集群在cluster.cfg配置文件配置。

请先 登录 后评论