RabbitMQ 入門 (Go) – 7. 數據持久化(下)【完】

資料庫

我使用的是 PostgreSQL

使用的驅動是 github.com/lib/pq

這個網址 //pkg.go.dev/github.com/lib/pq 是官方文檔。

 

創建數據表

打開 PostgreSQL 的管理工具 pgAdmin 4web 版),創建一個資料庫:

 

 

 

資料庫名叫 distributed

 

 

 

 

創建數據表

首先創建 sensor 表,裡面存放感測器資訊:

 

 

 

 

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

 

 

 裡面需要有感測器的數據,名稱要和批處理文件中感測器的名稱要一致。

 

另一個表是 sensor_reading,裡面存放感測器的數值:

 

 

 

安裝驅動

在項目的根目錄使用命令:go get -u github.com/lib/pq 進行安裝。

 

然後建立 datamanager 包,裡面的文件如下:

 

獲得資料庫連接

先看 db.go

這裡就是獲得一個資料庫連接存放在 db 變數里,它是包內可訪問的。

 

存儲數據

再看 sensorreader.go,它的作用是將感測器的數值存入到資料庫:

這個邏輯很簡單,就不介紹了。

 

最後在 exec 包中建立 main.go

  1. 首先獲得 RabbitMQ 的連接和 Channel,然後通過 Channel 從持久化 Queue 獲得數據。

  2. 對數據進行解碼,存儲到資料庫中

  3. 如果沒有錯誤,最後使用 Ack 方法來通知 Queue 消息已經被妥善的處理了,可以將它從 Queue 裡面移除了。

 

運行測試

運行之前的批處理文件,還要運行 datamanager

 

查看數據表,裡面就有數據了: