我在Azure中有一个调度程序和一些工作程序。调度程序将消息放入队列中,工作人员将这些消息拉出来并对其进行处理。我现在刚刚进入一个场景,一旦达到某个阈值,我将需要将一些数据从表存储移动到我们的数据库。这些项目需要按顺序处理,最早的是。达到该阈值后,将按顺序处理所有其他项目。触发传输的当前消息需要填充在行尾并进行重新处理。
所以,我的问题......
是否可以简单地将消息重新发送到队列中,或者是否有可能导致问题?
queueProvider.SendMessage(message);
一位同事提到他“虽然他可能已经读过一些关于需要做些特别事情的事情。”我还没有看到任何证实他怀疑的事情但是我认为我会摆出姿势这里的问题只是为了安全。
答案 0 :(得分:1)
简短的回答是它很好。如果你有一个CloudQueueMessage,你可以将它发送到任何队列(它只是一天结束时的REST请求)。每次你使用AddMessage()时,它都会创建一个新的ID(可能是同一个pop收据,但这无关紧要)。话虽如此,有些事情你可能想要照顾或调查:
答案 1 :(得分:-1)
建议队列使用者中的所有逻辑都是幂等的,因为实际上可以多次拾取消息。我们必须记住,队列服务保证了消息将被传递,至少一次 - 所以你最终可能会用这种方法复制消息。