我有以下理论问题。如何在Azure中创建“独特”队列?
我希望能够在Azure应用程序中创建每个角色的多个实例。至少2,以确保它的工作24/7(或近24/7)。
这对于侦听数据的客户端前端和角色很容易。
对于处理数据并将结果保存在Blob /表存储中的工作角色也很容易,假定每个工作角色处理它自己的一组数据以创建单个结果。
但我遇到了这个应用程序的“中间”的问题。
在最简单的情况下,如果我可以创建一个Azure存储“distinct”队列(没有两个消息是相同的),那么这很容易。但据我所知,这是无法完成的,尤其是因为您一次只能下载32条消息。
所以,我需要某种控制器角色......我想。这个角色可以确保工作人员的角色不会互相干扰。
但是,这意味着控制器角色不能有多个实例!
我该如何解决这个问题?
编辑:
我看我可能已经给出关于我的问题,信息太少。
我知道Azure队列是如何工作的;我知道,一旦邮件出队,它将不会在一段时间内或其他角色可用,或直到它被删除。
问题是,我不能只用随机,唯一的数据填充队列,比如GUID。
下面是对问题的更为扎实的解释。
- 监听器角色侦听客户端数据,并将该数据放入基表中,然后通过队列通知该表的特定部分已被更改。
- 监听器角色可能会报告表中的同一部分已被多次修改 - 它们不跟踪队列中发生了什么,以及它已经在发生了什么,因此他们只是沿着“hey ,我为这个客户修改了这个位“(例如)。
- 工作人员根据听众提供的信息创建或刷新特定文件(主要是斑点)。目前,只有一名工作人员下载整个队列,检查不同的消息,然后根据需要刷新所有文件。添加第二个工作者会导致问题:由于队列通常不包含不同的值,因此两个工作人员可能会开始在同一个输出文件上工作,并相互中断。
因此,我正在寻找一个不同的队列,或者至少提供了一种方法来检查是否还没有放置特定的消息。
如果服务总线是唯一的出路,那就这样吧,但最好让解决方案尽可能简单。;)
不完全确定你在问什么。你能详细说一下吗?为什么不能将不同的消息添加到队列中? 32条消息的读取限制如何与不同的消息相关?如果没有管理员角色,工作人员角色会如何相互干扰? – 2012-03-28 12:37:34