RabbitMQ 入門 (Go) – 7. 數據持久化(下)【完】
數據庫
我使用的是 PostgreSQL。
使用的驅動是 github.com/lib/pq
這個網址 //pkg.go.dev/github.com/lib/pq 是官方文檔。
創建數據表
打開 PostgreSQL 的管理工具 pgAdmin 4(web 版),創建一個數據庫:
數據庫名叫 distributed:
創建數據表
首先創建 sensor 表,裏面存放傳感器信息:
列如下,其中id 是自增主鍵:
裏面需要有傳感器的數據,名稱要和批處理文件中傳感器的名稱要一致。
另一個表是 sensor_reading,裏面存放傳感器的數值:
安裝驅動
在項目的根目錄使用命令:go get -u github.com/lib/pq 進行安裝。
然後建立 datamanager 包,裏面的文件如下:
獲得數據庫連接
先看 db.go:
這裡就是獲得一個數據庫連接存放在 db 變量里,它是包內可訪問的。
存儲數據
再看 sensorreader.go,它的作用是將傳感器的數值存入到數據庫:
這個邏輯很簡單,就不介紹了。
最後在 exec 包中建立 main.go:
-
首先獲得 RabbitMQ 的連接和 Channel,然後通過 Channel 從持久化 Queue 獲得數據。
-
對數據進行解碼,存儲到數據庫中
-
如果沒有錯誤,最後使用 Ack 方法來通知 Queue 消息已經被妥善的處理了,可以將它從 Queue 裏面移除了。
運行測試
運行之前的批處理文件,還要運行 datamanager:
查看數據表,裏面就有數據了: