我们没有使用Azure Service Bus的主题(据我了解has additional requirements to support ordering,我的理解是每个队列都应恢复为以FIFO方式运行;但是,从今天的分析日志来看,我们15442条消息中的384条以与入队时不同的顺序出队
为了举例说明,我们有两个消息,d4350a6e68ad4c9fb1fb9ccebd766590和0e19fbd29ffd4c4693fff6dd57e4f683;这些分别在2018-11-14 09:27:31.8870000和2018-11-14 09:27:35.5950000入队(所以0e ...比d4晚4ish秒...)但是,它们在2018- 11-14 09:30:12.0320000和2018-11-14 09:29:57.4850000(所以d4 ...比0e晚15ish秒)。在此时间范围内,我们只有一个主机在同时进行入队和出队。
从人的角度来看,这样做的时机相对较近,我们已经看到
当我理解队列是队列时,我对这种行为感到有些惊讶-我是否需要做任何额外的魔术以确保按入队顺序出队? / p>
作为参考,排队的代码有点像:
var brokeredMessage = new BrokeredMessage(objectToQueue, new DataContractJsonSerializer(typeof(T)));
var queueClient = QueueClient.CreateFromConnectionString(connectionString);
queueClient.RetryPolicy = new RetryExponential(TimeSpan.FromSeconds(2), TimeSpan.FromSeconds(5), 5);
queueClient.Send(brokeredMessage);
并且我们正在使用服务总线触发器使Azure Webjob出队