RabbitMQ 入門 (Go) - 7. 數(shù)據(jù)持久化(下)【完】
數(shù)據(jù)庫
我使用的是 PostgreSQL。
使用的驅(qū)動(dòng)是 github.com/lib/pq
這個(gè)網(wǎng)址 https://pkg.go.dev/github.com/lib/pq 是官方文檔。
創(chuàng)建數(shù)據(jù)表
打開 PostgreSQL 的管理工具 pgAdmin 4(web 版),創(chuàng)建一個(gè)數(shù)據(jù)庫:

數(shù)據(jù)庫名叫 distributed:

創(chuàng)建數(shù)據(jù)表
首先創(chuàng)建 sensor 表,里面存放傳感器信息:

列如下,其中id 是自增主鍵:

里面需要有傳感器的數(shù)據(jù),名稱要和批處理文件中傳感器的名稱要一致。
另一個(gè)表是 sensor_reading,里面存放傳感器的數(shù)值:

安裝驅(qū)動(dòng)
在項(xiàng)目的根目錄使用命令:go get -u github.com/lib/pq 進(jìn)行安裝。
然后建立 datamanager 包,里面的文件如下:

獲得數(shù)據(jù)庫連接
先看 db.go:

這里就是獲得一個(gè)數(shù)據(jù)庫連接存放在 db 變量里,它是包內(nèi)可訪問的。
存儲數(shù)據(jù)
再看 sensorreader.go,它的作用是將傳感器的數(shù)值存入到數(shù)據(jù)庫:

這個(gè)邏輯很簡單,就不介紹了。
最后在 exec 包中建立 main.go:

-
首先獲得 RabbitMQ 的連接和 Channel,然后通過 Channel 從持久化 Queue 獲得數(shù)據(jù)。
-
對數(shù)據(jù)進(jìn)行解碼,存儲到數(shù)據(jù)庫中
-
如果沒有錯(cuò)誤,最后使用 Ack 方法來通知 Queue 消息已經(jīng)被妥善的處理了,可以將它從 Queue 里面移除了。
運(yùn)行測試
運(yùn)行之前的批處理文件,還要運(yùn)行 datamanager:

查看數(shù)據(jù)表,里面就有數(shù)據(jù)了:



浙公網(wǎng)安備 33010602011771號