API 和消息消费者应该在同一个微服务中吗?

Should API and message consumer be in the same microservice?

我的团队对我们应该如何使用消息总线来构建我们的微服务感到困惑。

我们目前有一个 API 网关,其后有许多微服务都通过 http 进行通信。

在研究了消息总线 (Kafka) 的实现后,团队对消费者和 API 是否应该使用同一个服务或者它们是否应该是两个独立的服务争论不休。

一些人认为它们应该是分开的,因为它们有不同的缩放问题,而另一些人认为它们应该在同一个服务中,因为它们与同一个数据库通信并且有相同的域问题。 IE) 不在两个服务之间复制代码。

你有什么想法?

我们更希望它们在同一个服务中,因为它们在逻辑上正在处理相同的对象。

这在很大程度上也取决于您编写业务逻辑的方式。就像我们在这里更喜欢在聚合(领域驱动设计)中编写我们的业务逻辑,这就是为什么在同一服务中编写消费者是有意义的。

在某些情况下,他们只是为了搜索某种东西而更新数据,您可以将它们写在单独的服务中。

您还可以查看 Lagom(java 的微服务框架)