2012-04-10 107 views
0

我有一个调度程序和Azure中的一些工作人员。调度程序将消息放入一个队列中,工作人员将这些消息拉入并处理它们。我现在刚刚进入了一个场景,在达到某个阈值后,我需要将一些数据从表存储移动到我们的数据库。这些项目需要按顺序处理,最早最早。一旦达到该阈值,所有其他项目都将按顺序处理。当前触发传输的消息需要填入行尾并进行重新处理。将消息重新发送回Azure队列有任何问题

所以,我的问题的肉......

是否精细简单地重新发送消息到队列中的还是有一个潜在的针对导致问题吗?

queueProvider.SendMessage(message); 

一位同事提到,他“尽管他可能读了一些关于需要做一些特别的东西。”我还没有看到任何证实他的怀疑却然而所以我想我会姿这里的问题只是为了安全。

回答

1

简单的答案是,它很好。如果你有一个CloudQueueMessage,你可以将它发送到任何队列(这只是一天结束时的REST请求)。每次AddMessage()时,它会创建一个新的ID(可能是同一个弹出式收据,但这并不重要)。话虽这么说,有可能是您想照顾和或调查一些事情:

  1. 如果你把一个消息到一个队列,弹出它,并推到另一个队列或同一个队列,你或许应该删除第一条消息离开队列。只是弹出它意味着你已经设置了隐形时间,但它会很快重新出现(现在你在每个队列上都有相同的消息内容)。所以,如果我弹出一条消息并立即再次推送它,现在我在队列中有两条消息具有相同的内容。
  2. 您现在可以更新消息。如果您需要订购,这可能适合您。您可以在消息本身的元数据或内容中指明它处于什么阶段,并且您可以通过周到的实现在此处订购。
+0

感谢您的回答! – 2012-04-10 17:39:37

-1

建议队列使用者内部的所有逻辑都是幂等的,因为消息实际上可以被多次拾取。我们必须记住,队列服务保证一个消息将被传递,至少一次 - 所以你最终可以用这种方法复制消息。

相关问题