【发布时间】:2020-07-10 13:38:19
【问题描述】:
这是一个高级问题,我正在询问我目前正在构建的东西,但似乎无法找到我正在寻找的确切答案。
场景: 我有一个 .Net Core REST API,它将接收来自外部应用程序的请求。这些请求将被推送到 RabbitMQ 实例中。这些通知将被发送到一个交换器,然后分散到多个队列以供多个消费者使用。
我将负责一位消费者,我正在寻求有关最佳做法的建议。最终,将有一个 REST API 最终需要对这些被推送到队列中的消息做出反应。这个 REST API 是在 Kubernetes 集群上运行的容器化 (Docker) 应用程序。它将在这些通知(队列消息)之外接收大量请求流量,进行 SQL 调用等。
我的问题是,我是否应该有一个订阅此队列的外部微服务(托管服务/后台服务)以调用所述 REST API。有点像交通警察;根据某些数据点将消息路由到适当的 API 方法。
或者
是否可以将此消费者直接放入有问题的高流量 REST API 中?
对此有什么建议吗?提前致谢!
【问题讨论】:
-
这个问题太宽泛了,但我建议看at source 并阅读this great book
-
如果您的数据库将成为瓶颈,那么您选择哪个选项并不重要。您需要确保其余的 api 读取不会被队列消息写入阻塞。所以可能将你的读写模型分开。
-
数据库不会成为瓶颈。在这种情况下,API 不会写入队列。 API 将是消费者,或者消费者将是一个微服务,将流量引导到容器化 API
标签: c# rest kubernetes rabbitmq