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都必须遵循的特性