Compartir vía


Salida de Azure Functions desde Azure Stream Analytics

Azure Functions es un servicio de proceso sin servidor que puede usar para ejecutar código a petición sin tener que aprovisionar o administrar explícitamente la infraestructura. Permite implementar código desencadenado por eventos que se producen en Azure o en los servicios de asociados. Esta capacidad de Azure Functions para responder a los desencadenadores hace que sea una salida natural para Azure Stream Analytics. Este adaptador de salida permite a los usuarios conectar Stream Analytics a Azure Functions y ejecutar un script o un fragmento de código en respuesta a una variedad de eventos.

La salida de Azure Functions de Stream Analytics no está disponible en Microsoft Azure operado por 21Vianet y Azure Alemania (T-Systems International). Tampoco se admite la conexión a Azure Functions dentro de una red virtual (VNet) desde un trabajo de Stream Analytics que se ejecuta en un clúster multiinquilino.

Azure Stream Analytics invoca Azure Functions a través de desencadenadores HTTP. El adaptador de salida de Azure Functions está disponible con las siguientes propiedades configurables:

Nombre de la propiedad Descripción
Aplicación de función El nombre de tu aplicación de Azure Functions.
Function El nombre de la función en tu app de Azure Functions.
Key Si quieres usar una función de Azure de otra suscripción, puedes hacerlo proporcionando la clave para acceder a tu función.
Tamaño máximo del lote Una propiedad que te permite establecer el tamaño máximo para cada lote de salida que se envía a tu función de Azure. La unidad de entrada está en bytes. De forma predeterminada, este valor es de 262 144 bytes (256 KB).
Número máximo de lotes Una propiedad que te permite especificar el número máximo de eventos en cada lote que se envía a Azure Functions. El valor predeterminado es 100.

Azure Stream Analytics espera el estado HTTP 200 de la aplicación de Functions para lotes que se procesaron correctamente.

Cuando Azure Stream Analytics recibe una excepción 413 ("http Request Entity Too Large") de una función de Azure, reduce el tamaño de los lotes que envía a Azure Functions. En el código de la función de Azure, use esta excepción para asegurarse de que Azure Stream Analytics no envía lotes sobredimensionados. Además, asegúrese de que el número máximo de lotes y los valores de tamaño usados en la función sean coherentes con los valores especificados en el portal de Stream Analytics.

Nota:

Durante la conexión de prueba, Stream Analytics envía (POST) un lote vacío a Azure Functions para probar si la conexión entre los dos funciona. Asegúrese de que la aplicación de Functions controla las solicitudes por lotes vacías para asegurarse de que se supere la conexión de prueba.

Además, en una situación en la que no hay ningún aterrizaje de eventos en un período de tiempo, no se genera ninguna salida. Como resultado, no se llama a la función computeResult . Este comportamiento es coherente con las funciones de agregado de ventana integradas.

Partición

La clave de partición se basa en la cláusula PARTITION BY de la consulta. El número de generadores de salida sigue el particionamiento de entrada para consultas totalmente paralelizadas.

Tamaño del lote de salida

El tamaño de lote predeterminado es de 262 144 bytes (256 KB). El recuento de eventos predeterminado por lote es 100. El tamaño del lote es configurable y se puede aumentar o disminuir en las opciones de salida de Stream Analytics.

Limitación

Azure Functions debe completar su solicitud en menos de 100 segundos, ya que el cliente HTTP agota el tiempo de espera después de 100 segundos. Si azure Functions tarda más de 100 segundos en procesar un lote de datos, hay un tiempo de espera que desencadenará un reintento. Este reintento puede dar lugar a datos duplicados porque Azure Functions procesará los datos de nuevo y generará potencialmente la misma salida, ya que puede haberse generado parcialmente en la solicitud anterior.

Ejemplos de código

La salida de Azure Functions se puede usar para retransmitir mensajes a bases de datos no admitidas, como Redis o actualizar tablas en Azure SQL.

Pasos siguientes