我使用Azure的环境和发展.NET管理多个Azure的服务总线队列同时
我运行一个Web应用程序(ClientApp),其采用的客户端数据进行一系列的计算。这些计算是性能密集型的,因此它们在单独的Web应用程序(CalcApp)上运行。
当前,ClientApp将计算请求发送到CalcApp。来自每个客户的请求都被放入一个公共队列,并且每次运行一个FIFO。我的目标是为每个客户创建单独的队列并同时运行几个计算。
我想使用Azure服务总线队列来实现这一点。在ClientApp上,服务总线将检查该客户端的现有队列,并在需要时创建一个队列。在CalcApp上,应用程序会定期检查现有的队列。如果它找到一个新的队列,那么它会创建一个新的QueueClient,它使用OnMessageAsync()和RunCalculationsAsync()作为回调函数。
这是可行的,甚至是一个好主意?
我仍然能够处理这种模式的重复检测?通过混合计算按钮,可能让客户非常不耐烦。 – clenard
通过重复我假设你的意思是在一个特定的客户端的用户多次请求计算,并且同一事件的多条消息登陆队列。 Azure构建了可以配置的重复检测。或者,您可以使用持久存储来了解任务是否已完成。您可以创建一个SQL表,DocumentDB等,在过程开始时检查这种情况。在这个过程结束时,为这个值加上标记,以便下一个需要处理的消费者知道它已经完成。 – DanielG
有关原生重复检测的信息:http://blog.iquestgroup.com/en/windows-azure-service-bus-duplicate-detection/#.Vnl7CblIjmF – DanielG