使用消息队列会增加项目的复杂度。我的一个Side project是一个邮件相关的项目,主要功能是接收和发送邮件,是一个saas类型的项目,用户使用我的API发送和接收邮件,为了缩短API block用户请求进程的时间,我把所有的实现代码移到队列里面。所以队列的消费进程需要抽象出公共的配置文件,比如数据库的连接信息,Model,某些应用抽象了业务逻辑,这些部分的代码也需要放置在一个公共的项目里面。
原本项目是一个叫replybymail-web的包,后来因为发送邮件部分的代码需要放置在队列里面,建立了一个叫做replybymail-sender的rabbitmq消费者进程,这个消费进程用pm2来启动。这是sender需要和web公用同一个replybymail-model的包,model的包所有需要的模型的代码,同事新增了reply-common,包括
- 一些加密的方法
- 配置信息如RabbitMQ的连接地址和用户名密码
- 一些依赖配置
- 一些公共的方法
这时,我们的结构就变成了这样。
replybymail架构图.png
网友评论