У меня есть функция Azure с использованием триггера служб автобусы, созданной в C#. < /p>
Эта функция определяет сообщение об сервисной шине (которое содержит URL -адрес blob в файл) и вызывает API, API создает запись DB, затем заполняет запись DB, используя файл Blob и удаляет ее. < /P>
Процесс API может занять до 40 секунд. < /P>
После окончания API он посылает ответ на функцию Azure, которая выполняет «overseMessageAsync» или «DeadletMersessAgeAsync» в зависимости от того, был ли ответ API положительным или нет. < /p>
Проблема. , основываясь на просмотре записей DB вживую, он создает несколько записей БД, а затем начинает заполнять их одновременно, даже после того, как я (предположительно) указал только по одному за раз. Когда он начнет получать сообщения, это идет один за другим (как и ожидалось), но после нескольких сообщений (6-7) он запускает несколько сообщений за раз. < /P>
в зависимости от того, сколько сообщений Я отправляю его либо: < /p>
(сотни) правильно заполняет DB и завершает все сообщения, но отправляет многие из них Deadletter, как «Всёр не существует «(Может быть, по какой -то причине, это дает одно и то же сообщение об сервисной шине более одного раза). Это постоянно показывает успех в вызовах функций, поскольку функция выполняет ответ от API (даже если это сбой) < /li>
(тысячи) он прекращает заполнение записей БД, созданных после несколько тысяч сообщений, обрабатывая около половины из них. Отправка каждого не обработанного вызова на неудачные призывы. < /p>
Я попытался самостоятельно заполнить сообщения, установив автозаполнение FALS . < /p>
function < /p>
public async Task Run(
[ServiceBusTrigger("serviceBus", Connection = "ServiceBusConnection", AutoCompleteMessages = false)]
ServiceBusReceivedMessage message,
ServiceBusMessageActions messageActions)
{
string content = message.Body.ToString();
try
{
//Send content to EndPoint
RestClient client = new RestClient("endpoint");
RestRequest request = new RestRequest("requestendpoint", Method.Post);
request.AddQueryParameter("paramName", content);
RestResponse response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
_logger.LogInformation($"Success");
await messageActions.CompleteMessageAsync(message);
}
else
{
var errorDetails = response.Content;
_logger.LogInformation($"Failed: {errorDetails}");
await messageActions.DeadLetterMessageAsync(message);
}
}
catch (Exception ex)
{
_logger.LogInformation($"Exception: {ex}");
await messageActions.DeadLetterMessageAsync(message);
}
}
< /code>
Настройка Azure файла хоста < /p>
{
"version": "2.0",
"extensions": {
"serviceBus": {
"prefetchCount": 1,
"messageHandlerOptions": {
"autoComplete": false,
"maxConcurrentCalls": 1
},
"sessionHandlerOptions": {
"autoComplete": false,
"maxConcurrentSessions": 1
},
"batchOptions": {
"maxMessageCount": 1,
"autoComplete": false
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... -at-a-time
Функция Azure, не обрабатывающая по одному сообщению за раз ⇐ C#
Место общения программистов C#
-
Anonymous
1739040888
Anonymous
У меня есть функция Azure с использованием триггера служб автобусы, созданной в C#. < /p>
Эта функция определяет сообщение об сервисной шине (которое содержит URL -адрес blob в файл) и вызывает API, API создает запись DB, затем заполняет запись DB, используя файл Blob и удаляет ее. < /P>
Процесс API может занять до 40 секунд. < /P>
После окончания API он посылает ответ на функцию Azure, которая выполняет «overseMessageAsync» или «DeadletMersessAgeAsync» в зависимости от того, был ли ответ API положительным или нет. < /p>
Проблема. , основываясь на просмотре записей DB вживую, он создает несколько записей БД, а затем начинает заполнять их одновременно, даже после того, как я (предположительно) указал только по одному за раз. Когда он начнет получать сообщения, это идет один за другим (как и ожидалось), но после нескольких сообщений (6-7) он запускает несколько сообщений за раз. < /P>
в зависимости от того, сколько сообщений Я отправляю его либо: < /p>
(сотни) правильно заполняет DB и завершает все сообщения, но отправляет многие из них Deadletter, как «Всёр не существует «(Может быть, по какой -то причине, это дает одно и то же сообщение об сервисной шине более одного раза). Это постоянно показывает успех в вызовах функций, поскольку функция выполняет ответ от API (даже если это сбой) < /li>
(тысячи) он прекращает заполнение записей БД, созданных после несколько тысяч сообщений, обрабатывая около половины из них. Отправка каждого не обработанного вызова на неудачные призывы. < /p>
Я попытался самостоятельно заполнить сообщения, установив автозаполнение FALS . < /p>
function < /p>
public async Task Run(
[ServiceBusTrigger("serviceBus", Connection = "ServiceBusConnection", AutoCompleteMessages = false)]
ServiceBusReceivedMessage message,
ServiceBusMessageActions messageActions)
{
string content = message.Body.ToString();
try
{
//Send content to EndPoint
RestClient client = new RestClient("endpoint");
RestRequest request = new RestRequest("requestendpoint", Method.Post);
request.AddQueryParameter("paramName", content);
RestResponse response = await client.ExecuteAsync(request);
if (response.IsSuccessful)
{
_logger.LogInformation($"Success");
await messageActions.CompleteMessageAsync(message);
}
else
{
var errorDetails = response.Content;
_logger.LogInformation($"Failed: {errorDetails}");
await messageActions.DeadLetterMessageAsync(message);
}
}
catch (Exception ex)
{
_logger.LogInformation($"Exception: {ex}");
await messageActions.DeadLetterMessageAsync(message);
}
}
< /code>
Настройка Azure файла хоста < /p>
{
"version": "2.0",
"extensions": {
"serviceBus": {
"prefetchCount": 1,
"messageHandlerOptions": {
"autoComplete": false,
"maxConcurrentCalls": 1
},
"sessionHandlerOptions": {
"autoComplete": false,
"maxConcurrentSessions": 1
},
"batchOptions": {
"maxMessageCount": 1,
"autoComplete": false
}
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79422300/azure-function-not-processing-one-message-at-a-time[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия