# counter 佇列管理員 ## 資料夾結構 beans 用來裝Call API後之ResultObject controllers Restful API呼叫用控制器 dev_env Docker-Compose環境產生設定 env 系統設定 route 系統路由設定 services 系統任務執行主程式 main.go 主程式 ## 程式運行原理 本系統會透過多行程啟動一個Restful API與一個與Messae Quete溝通,並查看任務且執行任務之服務 當使用者透過呼叫本系統Restful API時,系統會將需要操作的事務記錄到Message Quete去,當使用者收到HTTP 200之後,本系統會每隔二秒自己去查看需要執行的任務,並執行他 本系統透過nsq做為Message Quete 目前它己有一個現成的寄信服務,其他可以依自己做擴充,要修改Resful API,就自己在Route/Web.go裡面設定路由,然後將對應的程式放到Controllers去,要開發供MQ執行的任務,就將程式放到Services去,並修改./main.go的runService內容 本來有想過這隻程式只做佇列排程就好,最後在透過gRPC或是CURL去呼叫其他的Restful API,這樣會比較乾淨,只是透過外部呼叫效能不會比同一個系統裡面執行還好 如果連nsq都不想自己架的人,可以自己安裝Docker與Docker Compose,自己到./dev_env資料夾下打docker-compose up -d --build,nsq會自己架好 ## 必須套件 本程式透過Google Protobuf 3產生所需之ResultObject,然Proto 3之後官方不支持Custom Tags,所以還需要多安裝一個寫入retags的套件 git clone https://github.com/qianlnk/protobuf.git $GOPATH/src/github.com/golang/protobuf go install $GOPATH/src/github.com/golang/protobuf/protoc-gen-go 還有與nsq溝通用之套件 go get -u -v github.com/bitly/go-nsq 及Restful Framework go get -u -v github.com/gin-gonic/gin ## 程式操作流程 1. 將./env/env.swp檔名改成env.go 2. 修改./env/env.go並設定您的SMTP Server與Message Quete Server 3. 到./beans底下,運行protoc --go_out=plugins=grpc+retag:. *.proto 4. go run main.go