MassTransit/RabbitMQ:一项服务或多项服务
MassTransit/RabbitMQ: one service or multiple services
我有大约 300 个不同的消费者/300 种消息类型/300 个队列,它们背后有最疯狂的功能。
从极端看:
- 是制作 1 个 windows 服务(更易于部署)且有 300 个消费者收听的最佳选择。
- 或 300 个 windows 服务(更容易在开发者之间拆分)每个独立的 1 个消费者但不可能由支持人员维护
?
更新:从 1 到 300 个队列
RabbitMQ 可以同时支持数百个队列,每个队列应该负责一种特定类型的消息,例如响应状态或在线订单信息或堆栈跟踪信息以供其他工作单元进一步处理,这三个是不相同的,如果您将它们全部放在一个队列中,请将它们隔离到不同的队列中。
如果您将所有数据保存在一个队列中,它也会影响您的应用程序性能,因为每个队列按顺序工作,并且由于您有 300 个消费者等待 300 种类型的消息,几乎所有这些消息都可能是处于等待状态,这也是复杂决策算法的一个原因,如果你正在使用一个算法来找出正确的消费者。
单个队列也可能出问题的是,它现在是一个瓶颈,如果该队列失败,可能会阻碍整个应用程序的运行,因为每个消费者都会听它。通过使用不同的队列,如果一个特定队列遇到问题,系统的其余部分仍然可以处理。
您可以检查是否有任何共同点,以及在将队列数量从 1 增加到许多后,服务是否可以占用比一个更多的消费者,而不是为每个服务分配 1 个消费者。
我有大约 300 个不同的消费者/300 种消息类型/300 个队列,它们背后有最疯狂的功能。
从极端看:
- 是制作 1 个 windows 服务(更易于部署)且有 300 个消费者收听的最佳选择。
- 或 300 个 windows 服务(更容易在开发者之间拆分)每个独立的 1 个消费者但不可能由支持人员维护
? 更新:从 1 到 300 个队列
RabbitMQ 可以同时支持数百个队列,每个队列应该负责一种特定类型的消息,例如响应状态或在线订单信息或堆栈跟踪信息以供其他工作单元进一步处理,这三个是不相同的,如果您将它们全部放在一个队列中,请将它们隔离到不同的队列中。
如果您将所有数据保存在一个队列中,它也会影响您的应用程序性能,因为每个队列按顺序工作,并且由于您有 300 个消费者等待 300 种类型的消息,几乎所有这些消息都可能是处于等待状态,这也是复杂决策算法的一个原因,如果你正在使用一个算法来找出正确的消费者。
单个队列也可能出问题的是,它现在是一个瓶颈,如果该队列失败,可能会阻碍整个应用程序的运行,因为每个消费者都会听它。通过使用不同的队列,如果一个特定队列遇到问题,系统的其余部分仍然可以处理。
您可以检查是否有任何共同点,以及在将队列数量从 1 增加到许多后,服务是否可以占用比一个更多的消费者,而不是为每个服务分配 1 个消费者。