使用消息隊列會增加項目的復雜度。我的一個Side project是一個郵件相關的項目,主要功能是接收和發送郵件,是一個saas類型的項目,用戶使用我的API發送和接收郵件,為了縮短API block用戶請求進程的時間,我把所有的實現代碼移到隊列里面。所以隊列的消費進程需要抽象出公共的配置文件,比如數據庫的連接信息,Model,某些應用抽象了業務邏輯,這些部分的代碼也需要放置在一個公共的項目里面。
原本項目是一個叫replybymail-web的包,后來因為發送郵件部分的代碼需要放置在隊列里面,建立了一個叫做replybymail-sender的rabbitmq消費者進程,這個消費進程用pm2來啟動。這是sender需要和web公用同一個replybymail-model的包,model的包所有需要的模型的代碼,同事新增了reply-common,包括
- 一些加密的方法
- 配置信息如RabbitMQ的連接地址和用戶名密碼
- 一些依賴配置
- 一些公共的方法
這時,我們的結構就變成了這樣。
replybymail架構圖.png