c# - Llamar a una función de Azure activada por HTTP desde otra

CorePress2024-01-25  12

Tengo una solución VisualStudio con 3 funciones de Azure: funciones A, B y C. Todas ellas se activan mediante HTTP. Ahora, necesito crear una nueva función D (¿una función duradera?) para encadenar las funciones A, B y C. Dependiendo de los parámetros recibidos en la función D, tiene que ejecutar A-B-C, o tal vez A-C, o tal vez alguna otra combinación. Pero todavía necesito llamar a A, B y C de forma independiente, como se llaman ahora que la función D no existe. Entonces, lo que necesito saber es:

¿Crear una función duradera D es la mejor solución para hacer lo que necesito hacer? Si es así, ¿cómo llamo a las funciones A, B y C desde la función D?

Gracias

1

¿Cuánto tiempo lleva completar las llamadas a A, B y C? Si el monto total es inferior a unos pocos minutos, puedes llamarlos secuencialmente y en cualquier orden en D.

-Peter Bons

28 de marzo de 2021 a las 8:27

A veces, A, B y C pueden tardar un tiempo "largo" tiempo para terminar, digamos más de 10 minutos cada uno

&norteguión; David

29 de marzo de 2021 a las 5:42



------------------------------------

Como otros han mencionado, usar el patrón de encadenamiento de funciones con Durable Functions es definitivamente el camino a seguir. Esta es una solución más resistente que llamar directamente a las funciones A/B/C.

Recomiendo consultar los documentos y los ejemplos de códigos. También tengo algunos vídeos de YouTube sobre Durable Functions.

La función D será su función orquestadora y esta función encadenará las funciones de actividad A, B y C (incluidas algunas declaraciones if para hacer ABC o AC).

Además, necesita una función de cliente (E) para iniciar la función de orquestador. En su caso, una función de cliente HTTP es prProbablemente lo más probable.

Mencionas que todavía quieres llamar a las funciones A, B y C individualmente, sin el orquestador. Le recomiendo que elimine la lógica de esas funciones para que sea reutilizable en diferentes funciones (también es mejor que se pueda probar por unidad).

Entonces la clase A' tiene tu lógica. Puede llamar a A' desde la nueva función ActividadA (como parte del encadenamiento de funciones) y llamarla desde la función activada Http de FunciónA normal como ya lo ha hecho.

Encadenamiento de funciones duradero:

E (client) -> D (orchestrator) -> A (activity, uses A') 
                                  B (activity, uses B')
                                  C (activity, uses C')

Funciones de activación HTTP habituales:

FunctionA (uses A')
FunctionB (uses B')
FunctionC (uses C')

2

1

Ayer comencé a construir algo como lo que usted describe, pero tenía algunas dudas. Tu respuesta confirma que estoy en el camino correcto. ¡Gracias!

- David

30/03/2021 a las 15:07

seguramente si necesitas encadenarlos así, ¿cuál es el punto de separarlos en primer lugar? ¿No evitaría esto el escalado y el uso del motor en múltiples instancias?

-Mark Homero

15 dic 2022 a las 21:43



------------------------------------

Crear un proyecto funcional duradero es bueno para encadenar trabajos en una variedad de patrones. Si hiciera esto, necesitaría crear e iniciar la función con algún tipo de activador y luego usar un orquestador para llamar a las actividades que sí funcionan.

Si solo desea utilizar un activador http, entonces necesita que un cliente http active la función con una solicitud.



------------------------------------

De acuerdo con la respuesta anterior. Puede utilizar funciones duraderas para el encadenamiento de funciones. Si desea que los ejemplos de MS comprendan cómo funcionan las funciones duraderas, consulteaquí: https://learn.microsoft.com/en-us/learn/modules/create-long-running-serverless-workflow-with-durable-functions/

randomThread
Luchando con las relaciones transformables de Laravel¿Por qué no puedo recurrir en una definición de tipo genérico java java.lang.Enum?¿Equivalente ANSI SQL de pandas `factorize()`?python: cómo crear una nueva columna basada en pandas de columnas existentesc# - Deje que un tren con varios vagones viaje por un camino de BézierDefinición: ¿puede un algoritmo ser una sola instrucción?c# - ¿Por qué filtrar este IEnumerable arroja una excepción NullReferenceException?go - Cómo agregar dinámicamente una columna al contenedor.NewGridWithColumns()r: crea una selección para el filtro basada en ggplot interactivo usando javascriptDesafío de codificación de JavaScript: cuadrícula de estrellasjavascript - ¿Cómo llamar a un php con parámetro de un