订阅高可用流表,报错<NotLeader>dolphin-21.trxpro.local:38961:datanode01

我的集群是3个数据节点的高可用集群,目前定义了一张高可用流表depth_stream,我用下列代码订阅时:

subscribeTable(server="datanode02",tableName="depth_stream", actionName="persist",  handler=tableInsert{depth_tb}, offset=-2,msgAsTable=true,batchSize=1048576,throttle=197,hash=0, reconnect=true, persistOffset=true, raftGroup=2)

报错:<NotLeader>dolphin-21.trxpro.local:38961:datanode01。

想问下我在datanode02上执行subscribetable,报这个错是什么原因?

请先 登录 后评论

1 个回答

wale

若不启用订阅高可用功能,客户端只需订阅Raft组中任意一个数据节点上的高可用流数据表,并启用订阅的自动重连功能(即把subscribeTable的reconnect参数设置为true)。Leader上的高可用流数据表会向订阅端发布数据。如果Raft组中的Leader宕机,系统会选举出新的Leader继续发布数据,客户端会自动切换订阅到新Leader上的高可用流数据表。若开启了订阅端高可用,即raftGroup指定了Raft组。则只能在leader上执行订阅。

你的代码设置了raftGroup参数,因此需要到leader上执行订阅。可以用getStreamingLeader(2) 看一些leader节点是哪个。


请先 登录 后评论