Saída do Azure Functions a partir do Azure Stream Analytics

O Azure Functions é um serviço de computação sem servidor que você pode usar para executar o código sob demanda sem precisar provisionar explicitamente ou gerenciar a infraestrutura. Ele permite que você implemente o código que é disparado por eventos que ocorrem no Azure ou por serviços de parceiros. Essa capacidade do Azure Functions de responder a gatilhos o torna uma saída natural para o Azure Stream Analytics. Esse adaptador de saída habilita aos usuários se conectar o Stream Analytics ao Azure Functions e executar um script ou trecho de código em resposta a vários eventos.

A saída do Azure Functions do Stream Analytics não está disponível no Microsoft Azure operado pela 21Vianet e Azure Alemanha (T-Systems International). Também não há suporte para a conexão com o Azure Functions em uma rede virtual (VNet) a partir de um trabalho do Stream Analytics que esteja sendo executado em um cluster multilocatário.

O Azure Stream Analytics chama o Azure Functions por meio de gatilhos de HTTP. O adaptador de saída do Azure Functions está disponível com as seguintes propriedades configuráveis:

Nome da propriedade Descrição
Aplicativo de funções O nome de seu aplicativo do Azure Functions.
Função O nome da função em seu aplicativo do Azure Functions.
Chave Se você quiser usar um Azure Function de outra assinatura, você pode fazer isso fornecendo a chave para acessar sua função.
Tamanho máximo do lote Uma propriedade que permite que você defina o tamanho máximo de cada lote de saída que é enviado para seu Azure Functions. A unidade de entrada é em bytes. Por padrão, esse valor é 262,144 bytes (256 KB).
Contagem máxima do lote Uma propriedade que permite que você especifique o número máximo de eventos em cada que é enviado ao Azure Functions. O valor padrão é 100.

O Azure Stream Analytics espera o status 200 do HTTP do aplicativo Functions para lotes que foram processados com êxito.

Quando o Azure Stream Analytics recebe a exceção 413 (“Entidade de solicitação http muito grande”) de uma função do Azure, ele reduz o tamanho dos lotes que envia para o Azure Functions. Em seu código de função do Azure, use essa exceção para verificar se o Azure Stream Analytics não enviará lotes grandes demais. Também verifique se os valores de contagem e o tamanho máximo do lote usados na função sejam consistentes com os valores inseridos no portal do Stream Analytics.

Observação

Durante a conexão de teste, Stream Analytics envia (POST) um lote vazio para o Azure Functions para testar se a conexão entre os dois funciona. Verifique se seu aplicativo Functions manipula as solicitações em lote vazias para garantir que os testes de conexão sejam aprovados.

Além disso, em uma situação em que não há nenhum evento caindo em uma janela de tempo, nenhuma saída é gerada. Como resultado, a função computeResult não é chamada. Esse comportamento é consistente com as funções de agregação em janelas internas.

Particionamento

A chave de partição se baseia na cláusula PARTITION BY na consulta. O número de gravadores de saída segue o particionamento de entrada para consultas totalmente paralelizadas.

Tamanho do lote de saída

O tamanho de lote padrão é 262.144 bytes (256 KB). A contagem de eventos padrão por lote é de 100. O tamanho do lote é configurável e pode ser aumentado ou diminuído nas opções de saída do Stream Analytics.

Limitação

O Azure Functions deve concluir sua solicitação em menos de 100 segundos, uma vez que o cliente HTTP atinge o tempo limite após 100 segundos. Se levar mais de 100 segundos para o Azure Functions processar um lote de dados, haverá um tempo limite que vai disparar uma nova tentativa. Essa repetição pode resultar em dados duplicados, porque o Azure Functions processará os dados novamente e potencialmente produzirá a mesma saída, pois ela pode ter sido parcialmente produzida na solicitação anterior

Exemplos de código

A saída do Azure Functions pode ser usada para retransmitir mensagens em bancos de dados sem suporte, como o Redis, ou atualizar tabelas no SQL do Azure.

Próximas etapas