Привет всем, кто читает это,
Мы написали функцию маршрутизатора на Azure в плане приложения, который получает сообщения от iothub, и в зависимости от типа сообщения мы направляем наше сообщение другому концентратору событий.
Ранее в этой функции у нас было 6 привязок к концентраторам событий. Недавно мы добавили еще 3 типа сообщений, поэтому еще 3 привязки к 3 концентраторам событий
В этой функции не происходит никакой обработки сообщений, но теперь мы видим, чтомы тратим в 16 раз больше времени на функцию маршрутизации.
Есть ли проблема с производительностью при наличии нескольких выходных привязок.Мы не видим увеличения загрузки входящих сообщений.
Мы работаем над функциями Azure 1.0 (Runtime version: 1.0.12205.0 (~ 1))
С уважением, Бен
Упрощенный пример кода функции маршрутизации
public static class IotHubRouterFunction
{
[FunctionName("IotHubRouterFunction")]
public static void Run([EventHubTrigger("%iothub%", Connection = "IothubRouterListen")]EventData myEventHubData,
[EventHub("%msg1-eventhub%", Connection = "msg1event")] ICollector<EventData> eventHub4Dmsg1Event,
[EventHub("%msg2-eventhub%", Connection = "msg2event")] ICollector<EventData> eventHub4Dmsg2Event,
[EventHub("%msg3-eventhub%", Connection = "msg3event")] ICollector<EventData> eventHub4Dmsg3Event,
//... like 6 more bindings like this
ILogger logger
)
{
try
{
var messageType = GetValue(myEventHubData.Properties, "type");
// routing
switch (messageType)
{
case "msg1event":
{
eventHub4DevicesStatusChanged.Add(eventHub4Dmsg1Event);
break;
}
case "msg2event":
{
eventHub4MeasurementLog.Add(eventHub4Dmsg2Event);
break;
}
case "msg3event":
{
eventHub4DeviceDiscovered.Add(eventHub4Dmsg3Event);
break;
}
//6 more cases like this
default:
{
logger.LogError("Unrouteable message of type: {messageType}", messageType);
break;
}
}
}
catch (Exception ex)
{
//removed
}
}
}
При 6 привязках сообщение проходит через функцию маршрутизатора при 50 мс При 9 привязках сообщение сканирует через функцию маршрутизатора при 800 мс
CPUтакже подняли на 30% с апплана (мы масштабировали дополнительно, поэтому у нас это под контролем, но почему так много, что вызывает это)