我试图按照NodeJs中的命令查询责任隔离模式(CQRS)设计服务。为了处理隔离,我采用以下方法:
REST API已与ExpressJs一起设计。以'update','create'和'delete'关键字开头的所有端点都被视为命令;所有带有“ get”或“ find”的端点均被视为查询。
请求到达其指定的处理程序时,会发生以下情况之一:
如果是命令,则在将任务委派给工作进程后立即发送响应;当主进程从工作程序接收到完成消息时,通过生成适当的事件来通知其他服务。
如果是查询,则由指定的工作程序处理响应,该工作程序可以使用作为参数传递的数据库连接的引用来获取并发送查询结果。
对于上面的(2),我试图创建一种以某种方式“将”响应对象“传递”给工作人员的机制,该工作人员随后可以完成请求。是否可以通过“克隆”响应对象并将其作为普通参数传递来完成?如果没有,实现此目标的首选方式是什么?
答案 0 :(得分:1)
我认为您最好在(2)中将查询传递给工作进程,该工作进程返回到主进程,然后再将该主进程发送回请求。
首先,您实际上并不想让工作进程“访问”外部。他们应该是所有内部人员,由主流程管理。
第二,Express服务器的工作是接收请求,对请求进行处理,然后返回结果。试图将通信传递给工作人员似乎过于复杂。
如果您真的担心自己的Express服务器会被请求淹没,则应该考虑使用类似Docker的东西来创建大量的Express实例。