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 necesidad de aprovisionar ni administrar explícitamente la infraestructura. Permite implementar el código desencadenado por los eventos que se producen en servicios de Azure o de sus socios. Esta capacidad que tiene Azure Functions para responder a los desencadenadores hace que sea una salida natural para Azure Stream Analytics. Este adaptador de salida permite que los usuarios conecten Stream Analytics con Azure Functions y ejecuten un script o parte de un código como 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 esté ejecutando en un clúster multinquilino.

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

Nombre de propiedad Descripción
Aplicación de función Nombre de la aplicación de Azure Functions.
Función Nombre de la función en la aplicación de Azure Functions.
Clave Si quiere usar una instancia de Azure Functions desde otra suscripción, debe proporcionar la clave para acceder a la función.
Tamaño máximo de lote Propiedad que permite establecer el tamaño máximo de cada lote de salida que se envía a la instancia de Azure Functions. La unidad de entrada se muestra en bytes. De manera predeterminada, este valor es 262 144 bytes (256 KB).
Número máximo de lotes Propiedad que 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 de HTTP 200 de la aplicación de Functions para los lotes que se procesaron correctamente.

Cuando Azure Stream Analytics recibe una excepción 413 ("La entidad de solicitud HTTP es demasiado grande") de una función de Azure, disminuye el tamaño de los lotes que envía a Azure Functions. En el código de función de Azure, use esta excepción para asegurarse de que Azure Stream Analytics no envíe lotes demasiado grandes. También, asegúrese de que los valores de tamaño y número máximo de lotes que se usan en la función sean coherentes con los valores que se especifican 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 la conexión de prueba es correcta.

También tenga en cuenta que no se genera ninguna salida en las situaciones en las que no se producen eventos en un período de tiempo. Como resultado, no se llama a la función computeResult. Este comportamiento es coherente con las funciones integradas de agregado en ventanas.

Creación de particiones

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

Tamaño de lote de salida

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

Limitación

Azure Functions debería completar su solicitud en menos de 100 segundos dado que, transcurrido este tiempo, el cliente HTTP agota el tiempo de espera. 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 que se dupliquen los datos, ya que Azure Functions los procesará de nuevo y podría generar la misma salida, dado que es posible que se haya generado parcialmente en la solicitud anterior.

Ejemplos de código

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

Pasos siguientes