У меня есть пространство имен служебной шины Azure, содержащее 8 тем, каждая с хотя бы одной подпиской.
Обычно существует два приложения логики: первое извлекает данные из нашей базы данных каждые полчаса (в 15 и 45 часов) и помещает их в выбранную тему служебной шины, а второе запускается с помощью параметра Когда сообщение получено в коннектор триггера подписки (автозаполнения) темы - с установленным параллелизмом по умолчанию (25). Пример показан ниже
"When_a_message_is_received_in_a_topic_subscription_(auto-complete)": {
"conditions": [],
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['servicebus']['connectionId']"
}
},
"method": "get",
"path": "/@{encodeURIComponent(encodeURIComponent('exampletopic'))}/subscriptions/@{encodeURIComponent('examplesubscription')}/messages/head",
"queries": {
"subscriptionType": "Main"
}
},
"recurrence": {
"frequency": "Minute",
"interval": 30,
"startTime": "2021-01-27T00:00:00.000Z",
"timeZone": "UTC"
},
"runtimeConfiguration": {
"concurrency": {
"runs": 25
}
},
"type": "ApiConnection"
}
Как упоминалось в заголовке, у меня возникла проблема, заключающаяся в том, что триггер срабатывает только при 30-минутном повторении опроса, как показано ниже, а не тогда, когда сообщения попадают в служебную шину (в отличие от триггера службы общих данных, который мы также используем который срабатывает при создании / обновлении / удалении мгновенно). Это сделано намеренно или я неправильно настроил?
Запуск приложений логики - триггер служебной шины
Другая проблема заключается в том, что настройка параллелизма буквально пропускает только 25, а остальное сохраняет в служебной шине до следующего запуска, поэтому нам приходится ждать длительные периоды между обработками. Я думал, что смысл настройки параллелизма состоит в том, чтобы позволить запуску приложения логики ждать в очереди, а затем, когда одно завершает работу, другое может запускаться. Как вы можете видеть на изображении, которое я вставил выше, этого просто не происходит. В ходе выполнения 3.45 из базы данных было извлечено 43 записи. Только 25 из них сработали в 4.00, а 17 остались на служебной шине до следующего запуска в 4.30. Это может стать огромным узким местом, если мы отправим через них огромные числа.
Ниже приведены настройки служебной шины, если они кому-то интересны:
Topic:
"properties": {
"defaultMessageTimeToLive": "P5D",
"maxSizeInMegabytes": 1024,
"requiresDuplicateDetection": true,
"duplicateDetectionHistoryTimeWindow": "PT1H",
"enableBatchedOperations": true,
"status": "Active",
"supportOrdering": true,
"autoDeleteOnIdle": "P10675199DT2H48M5.4775807S",
"enablePartitioning": false,
"enableExpress": false
}
Subscription:
"properties": {
"lockDuration": "PT5M",
"requiresSession": false,
"defaultMessageTimeToLive": "P5D",
"deadLetteringOnMessageExpiration": true,
"deadLetteringOnFilterEvaluationExceptions": true,
"maxDeliveryCount": 1,
"status": "Active",
"enableBatchedOperations": true,
"autoDeleteOnIdle": "P5D"
}
заранее спасибо