我用nest.js创建了一个新项目&并选择传输选项为Redis。当我每个微服务只使用一个实例时,它工作得很好,但是当我为一个微服务创建多个实例时,所有实例都在同时订阅消息。例如,假设有1个api网关(发布者)和3个产品管理微服务实例。当api网关发布消息创建产品时,3个实例订阅同一消息并创建3个相同的产品。
我认为应该有某种订阅消息的负载平衡或其他选项。
有没有人知道这个目的的最佳传输选项是什么,以及如何为每个微服务构建多个实例?
Redis PUB/SUB默认将所有消息发布到所有客户端。不幸的是,每个消息只能监听一个实例。如果你仍然想使用Redis作为解决方案,可以使用Redis Streams或PUB/SUB和Streams的组合来实现自定义传输。
目前没有任何开源包支持流。以下是Kamil对此的评论https://github.com/nestjs/nest/issues/3960#issuecomment-771647374