现在,我们需要模拟传感器,生成数据,并发布到 RabbitMQ。
建立传感器项目在 GOPATH src 下建立文件夹 sensors,使用 go mod init 初始化,并创建 main.go。
同时别忘了安装 amqp 的包:go get -u github.com/streadway/amqp
我们要生成一些模拟数据,生成数据有一定的范围(位于一个最大值和最小值之间),如下图:
因此,我们需要这样几个配置参数:
传感器的名称
传感器数据的更新频率
模拟生成数据的最大值
模拟生成数据的最小值
与前一次生成数据的差值的最大值(变化幅度的最大值)
设置命令行参数并读取
在这个项目里,我们需要通过命令行参数来传递配置,并在 Go 程序里面进行解析和读取。我们可以使用 os.Args 来搞这些命令行参数,但是更好的办法是使用 flag 这个包(其内部实现使用的也是 os.Args)。
我们先看代码:
第 5-9 行,我们声明了 5 个命令行参数。都是使用 flag 包下相应的函数实现的。
这几个命令行参数分别表示传感器名称、模拟数据的更新频率、模拟数据的最大值、最小值以及变化幅度的最大值。
这些命令行参数的类型分别是 string,uint,float64,float64,float64。
这些函数的参数都类似:
第一个参数是命令行参数的名称
第二个参数是命令行参数的默认值
第三个参数是参数的描述/帮助
在 main 函数里,我们调用 flat.Parse() 函数,就可以将命令行的参数值解析到 5-9 行声明变量里面。