20210311river的特性是,用Construct方法入参,并返回一个fin管道 - ziyouzy/2021blog GitHub Wiki
用Construct方法入参某个(某种数据源,允许一个或多个),并返回fin管道(允许返回一个或多个)
另一方面,任何一个river内部所用到的任何river-node,river-node的所有参数的创建于赋值都必须封装在这个river的内部实现,诸如如下初始化操作:
byteSliceAskerTest1 := &askers.ByteSlice{
UniqueId: uid,
Events: Events,
Errors: Errors,
Step: 2 * time.Second,
Mode: askers.ADD_TAIL,
}
var err error
if byteSliceAskerFin, err = byteSliceAskerTest1.Construct(usrio808SourcesTest1);err !=nil{
fmt.Println(fmt.Sprintf("初始化UniqueId为%s的ByteSliceAsker失败,错误代码为%s",uid,err))
return
}
其内部会用到river-node.crc但是如上初始化操作出Mode之外看不任何对crc的初始化操作,这是因为已经完整实现了对内部crc的初始化封装,usr-io808也是如此:
usrio808clinet := &clients.USR_IO808{
UniqueId: uid,
Events: Events,
Errors: Errors,
}
var err error
if usrio808ClientFin, err = usrio808clinet.Construct(con); err !=nil{
fmt.Println(fmt.Sprintf("初始化UniqueId为%s的客户端连接失败,"+
"系统将丢弃此次连接操作并开启下轮监听,错误代码为%s",uid,err))
continue
}
这是任何一个river都必须遵循的特性