在 model 包的 init 函数里面,需要使用 gob 包的 Register 函数把将要编码的类型进行注册,这样依赖于这个包的其它 Go 程序就可以把 SensorMessage 这个类型的消息对象发送过去了
建立 Queue 相关的工具包
建立 tools 包,并建立 queuetools.go 文件,其内容如下:
代码内容与之前的项目类似,就不解释了。
发布传感器数据到 RabbitMQ
这里还会使用到 bytes 包。
回到 main.go,修改代码:
前面添加了获取 Channel 和 Queue 的代码。其中第 37 行比较重要,因为我们不能保证在程序运行时,使用 Queue 名称作为路由 Key 的 Queue 存在,而使用 GetQueue 函数,就可以保证这个 Queue 会被正确的设置,并准备好被我们使用了。
第 42 行,使用 bytes 包创建了一个 *bytes.Buffer,它用来来承载编码后的数据,这个 Buffer 可以重复利用,所以实在 for range 的外部声明的。
但是每次使用 Buffer 都需要进行重置,也就是第 53 行的作用,这样以前的数据就会被移除,Buffer 的指针会回到初始位置。
第 43 行,使用 gob 和 Buffer 来创建编码器 。