Мы не используем темы для служебной шины Azure (что, как я понимаю, предъявляет дополнительные требования для поддержки заказа , и, насколько я понимаю, каждая очередь должна вернуться к работе в режиме FIFO, однако из анализанаши журналы только на сегодня, у нас было 384 из 15442 сообщений, удаленных в другом порядке по сравнению с тем, когда они были помещены в очередь
Чтобы проиллюстрировать на примере, у нас было два сообщения, d4350a6e68ad4c9fb1fb9ccebd766590 и 0e19fbd29ffd4c4693efudd;-11-14 09: 27: 31.8870000 и 2018-11-14 09: 27: 35.5950000 соответственно (поэтому 0e ... было на 4 секунды позже, чем d4 ...) Однако они были сняты с производства в 2018-11-14 09:30: 12.0320000 и 2018-11-14 09: 29: 57.4850000 соответственно (поэтому d4 ... было на 15 секунд позже 0e ...). За этот промежуток времени у нас был только один активный хост, выполняющий как постановку в очередь, так и извлечение из очереди.
Несмотря на то, что время для этого относительно близко с человеческой точки зрения, мы видели
Как я понял, очередьну что ж, очереди, я немного удивлен, что вижу такое поведение - нужно ли мне делать какую-то дополнительную магию, чтобы гарантировать, что они сняты с очереди в том порядке, в котором они были поставлены в очередь?
Для справкикод, который ставится в очередь, выглядит примерно так:
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, используя триггер служебной шины