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:
查看數據表,裡面就有數據了: