Я работаю над azure функциями и azure веб-заданиями.
Я пытаюсь отправить сообщения на служебную шину topi c, и оттуда сообщение
- Сначала с помощью функции Azure - читает из одной подписки, а приложение отправляет сообщение в космос. DB
- Во-вторых, Azure веб-заданиями - Читает из другая подписка и отправка сообщений в Azure хранилище BLOB-объектов.
Они оба используют триггер служебной шины azure.
SO, если число очень мало сообщения от 1 до 5 в виде c будут обработаны. Но если я отправляю около 30-40 сообщений одновременно, и приложение-функция, и веб-задания пропускают некоторые сообщения, я имею в виду, что если я отправляю около 30 сообщений и проверяю BLOB-объект, он показывает, что было получено только 25 сообщений. Я добавляю приложение функции azure, которое запускается по времени запуска, прекрасно работает с счетом 30 обработанных отправленных -30, но я действительно не хочу использовать время запуска, поскольку он принимает слишком много обращений в день.
Будет здорово, если кто-нибудь сможет мне помочь.
Функциональный триггер:
public static void ProcessArchiveQueueMessage([ServiceBusTrigger("*****", "*****", Connection = "ServiceBusConnectionString")] string message, ILogger log)
{
ArchiveDll.ProcessArchiveTopic("****", log);
}
Код Dll :
subscriptionClient.OnMessageAsync(m =>
{
try
{
Stream stream = m.GetBody<Stream>();
StreamReader reader = new StreamReader(stream);
topicData = reader.ReadToEnd();
var jObj = JsonConvert.DeserializeObject<JObject>(topicData);
StoreJsoninBlob(cloudContainer, stream, jObj);
StoreInCosmosDB(log, jObj);
subscriptionClient.Complete(m.LockToken);
}
catch (Exception ex)
{
subscriptionClient.DeadLetter(m.LockToken);
}
return Task.CompletedTask;
}, new Microsoft.ServiceBus.Messaging.OnMessageOptions()
{
AutoComplete = false,
MaxConcurrentCalls = 1
});
}
catch (Exception e)
{
}
}