同时管理多个Azure Service Bus队列

时间:2015-12-21 21:32:56

标签: asp.net azure azureservicebus azure-servicebus-queues azure-queues

我使用Azure环境并在.NET中开发

我正在运行一个Web应用程序(ClientApp),它使客户端数据执行一系列计算。计算是性能密集型的,因此它们在单独的Web应用程序(CalcApp)上运行。

目前,ClientApp将计算请求发送到CalcApp。来自每个客户端的请求被放入一个公共队列,并一次运行一个FIFO。我的目标是为每个客户端创建单独的队列,并同时运行多个计算。

我正在考虑使用Azure Service Bus队列来完成此任务。在ClientApp上,服务总线将检查该客户端的现有队列,并在需要时创建一个队列。在CalcApp上,应用程序会定期检查现有队列。如果它找到一个新队列,那么它将创建一个新的QueueClient,它使用OnMessageAsync()和RunCalculationsAsync()作为回调函数。

这是可行的还是一个好主意?

1 个答案:

答案 0 :(得分:0)

我会考虑使用多个使用者,如果您需要根据哪个客户端发起它来区分处理类型,可能会使用表示“客户端”的主题。每个客户端都可以在队列中添加一个条目,消费者可以对这些消息进行“斗争”。如果您遵循这种方法,则不可能两次处理相同的消息。

我不确定是否需要多个队列。

以下是有关竞争消费者模式的更多信息 https://msdn.microsoft.com/en-us/library/dn568101.aspx

您还可以构建一个使用者并生成多个线程。在此模型中,您将拥有一个队列和一个使用者,但仍然能够一次计算多个队列。但最终,竞争消费者的可扩展性更高,使用两种策略的组合。