kuiper-日志-0408测试random.go

文件结构

插件/random
导包:context,api,rand,time

结构:randomSource:interval seed pattern cancel

方法:Configure(主题名,连接信息的配置文件)
	利用配置文件初始化对象的interval,pattern,seed
方法:Open(api.StreamComtext, api.consumefunc, api.error)//线程,方法,异常
	每隔interval毫秒触发一次,pattern字典的值加上一个0~seed的随机数,得到一个新的字典,
	然后调用consume()方法
	如果接收到ctx对象的done方法,会停止
方法:Close(api.StreamComtext)//线程
	如果s对象的cancel方法不为空,会调用cancel方法
	
	
mqtt_source
导包:
结构:MQTTSoruce{srv, tpc, clientid, pVersion, uName, password, certPath, pkeyPath
	schema, conn}
方法:WithSchema(schema) MQTTsource
	返回对象自身
方法:Config(主题,配置文件)
	把配置文件字典转换为一个MQTTConfig对象cfg
	初始化MQTTSoruce:tpc=topic;srv=vag.servers[0];cliente.id=;pversion=;
	uName, password, certPath,pkeyPath
方法:open(api.StreamComtext, api.consumefunc, api.error//线程,方法,异常

方法:Close()
	
结构:MQTTConfig{Qos, sharedsubscription, servers, cliendid, PVersion Uname, Password, Certification, PrivateKPath

extension/source.md 翻译:
kuiper支持修改mqtt源,此外,也支持接收各种外部系统的数据。
开发源流程:
1.设置插件开发环境:(overview.md)
	插件必须实现kuiper导出的接口,因此kuiper项目必须位于gopath
	插件和kuiper放在同一项目中,进行设置:
		克隆kuiper项目
		再plugins/sources中创建插件实现文本
		build到同一文件夹中
开发源,必须实现config方法,此方法的参数包括:主题,配置文件(主机,端口,用户等信息),用于初始化源
主要任务,实现open方法:持续地从外部系统接收数据,发送给消费通道(consumer channel).
后者接收 SourceTuple接口类型的数据(包括一个信息体的字典,一个可选元数据的字典)
通常使用api.NewDefaultSourceTuple(message, meta)创建SourceTuple类型数据,meta可以是任何值得记录的东西
open方法的第一个参数是StreamContext指针,可以从中检索上下文信息,logger,侦听done()通道准备结束

测试日志

为kuiper扩展resource包括编写.go文本文件,配置为插件两步,先直接使用自带的random.go,省去了第一步编写程序的麻烦。
random.go中用到的结构的定义:

......
type randomSource struct {
	interval int
	seed     int
	pattern  map[string]interface{}
	cancel   context.CancelFunc
}
......

用到的配置文件:kuiper/etc/source/random.yaml内容:

default:
  interval: 1000
  pattern:
    count: 50

ext:
  interval: 300
  seed: 1
  pattern:
    count: 50

上面两个文件是已经存在了的.

准备工作

ubuntu系统;kuiper使用正常;安装了go语言环境;用go get 指令获取了github.com/emqx/kuiper包,放在gopath下。

开始测试

编译成.so文件

random.go位于$gopath/src/github.com/emqx/kuiper/plugins/sources下,在$gopath/src/github.com/emqx/kuiper/目录下启动终端,输入如下指令:

go build --buildmode=plugin -o plugins/sources/Random.so plugins/sources/random.go

几分钟后,在同文件夹下生成Random.so文件

移动

kuiper安装在/usr/local/kuiper目录下,用移动指令,将Random.so复制到/usr/local/kuiper/plugins/source下。

定义stream

  1. 启动kuiper
bin/server
  1. 定义stream
    不知道如何定义stream,应该是根据random.gokuiper/etc/source/random.yaml确定,但是不会写
//不会写
bin/cli create stream demorandom '()WITH (FORMAT="JSON", DATASOURCE="topic")'
  1. 查询有效消息
//不会写
bin/cli query

下面这一步和定义stream有关,不知道如何查询

//不会写
sql代码
  1. 给kuipr发送消息

里和定义stream那一步有关联,不知道如何发送消息,还是说消息是随机产生,不用发送?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值