微服务可以通过像 RabitMQ 这样的队列系统向自己发送异步消息吗?

问题描述

我正在经历一个微服务通过 RabbitMQ 向自身发送异步消息的项目,因为它同时包含消息生产者和消费者部分。原因是该服务可以向其他服务生成相同类型的消息,并从其他服务接收相同类型的消息。

这个模式对我来说是新的。它是微服务世界中的反模式吗?

解决方法

我不确定给出的原因是最好的动机,但在 CQRS 风格的架构中,向自身发送消息的服务是完全正常的。在这样的架构中,每个服务将托管两个进程:一个前端或公共 API(例如网站或 REST API)和一个后台进程/守护进程,用于处理公共 API 放入队列的所有消息。