Tutorial: Trabajo controlado por eventos mediante enlaces de Dapr
En este tutorial, se crea un microservicio para demostrar la API de enlaces de Dapr para trabajar con sistemas externos como entradas y salidas. Hará lo siguiente:
- Ejecutar la aplicación localmente.
- Implemente la aplicación en Azure Container Apps a través de Azure Developer CLI con el Bicep proporcionado.
El servicio escucha los eventos de enlace de entrada de un CRON del sistema y genera el contenido de los datos locales en un enlace de salida de PostreSql.
Requisitos previos
- Instalar Azure Developer CLI
- Instalar e inicializar Dapr
- Docker Desktop
- Instalar Git
Ejecutar la aplicación Node.js. localmente
Antes de implementar la aplicación en Azure Container Apps, comience ejecutando el contenedor de PostgreSQL y el servicio de JavaScript localmente con Docker Compose y Dapr.
Preparación del proyecto
Clone la aplicación Dapr de ejemplo en el equipo local.
git clone https://github.com/Azure-Samples/bindings-dapr-nodejs-cron-postgres.git
Vaya al directorio raíz del ejemplo.
cd bindings-dapr-nodejs-cron-postgres
Ejecución de la aplicación de Dapr mediante la CLI de Dapr
En el directorio raíz del ejemplo, cambie los directorios a
db
.cd db
Ejecute el contenedor de PostgreSQL con Docker Compose.
docker compose up -d
Abra una nueva ventana de terminal y vaya a
/batch
en el directorio de ejemplo.cd bindings-dapr-nodejs-cron-postgres/batch
Instale las dependencias.
npm install
Ejecute la aplicación de servicio JavaScript con Dapr.
dapr run --app-id batch-sdk --app-port 5002 --dapr-http-port 3500 --resources-path ../components -- node index.js
El comando
dapr run
ejecuta la aplicación de enlace de Dapr localmente. Una vez que la aplicación se ejecuta correctamente, la ventana de terminal muestra los datos de enlace de salida.Salida prevista
El servicio por lotes escucha los eventos de enlace de entrada de un CRON del sistema y genera el contenido de los datos locales en un enlace de salida de PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
En el terminal de
./db
, detenga el contenedor de PostgreSQL.docker compose stop
Implementación de la plantilla de aplicación Dapr mediante Azure Developer CLI
Ahora que ha ejecutado la aplicación localmente, vamos a implementar la aplicación de enlaces de Dapr en Azure Container Apps mediante azd
. Durante la implementación, intercambiaremos el contenedor local de PostgreSQL para un componente de Azure PostgreSQL.
Preparación del proyecto
Vaya al directorio raíz del ejemplo.
cd bindings-dapr-nodejs-cron-postgres
Aprovisionamiento e implementación mediante Azure Developer CLI
Ejecute
azd init
para inicializar el proyecto.azd init
Cuando se le solicite en el terminal, proporcione los parámetros siguientes.
Parámetro Descripción Nombre del entorno Prefijo del grupo de recursos creado para contener todos los recursos de Azure. Ubicación de Azure Ubicación de Azure para los recursos. Asegúrese de seleccionar una ubicación disponible para Azure PostgreSQL. Suscripción de Azure La suscripción de Azure para los recursos. Ejecute
azd up
para aprovisionar la infraestructura e implementar la aplicación Dapr en Azure Container Apps en un solo comando.azd up
Este proceso puede tardar un tiempo en finalizar. A medida que se completa el comando
azd up
, la salida de la CLI muestra dos vínculos de Azure Portal para supervisar el progreso de la implementación. La salida también muestra cómoazd up
hace lo siguiente:- Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio
./infra
medianteazd provision
. Una vez aprovisionados por Azure Developer CLI, puede acceder a estos recursos a través de Azure Portal. Los archivos que aprovisionan los recursos de Azure incluyen:main.parameters.json
main.bicep
- Un directorio de recursos de
app
organizado por funcionalidad - Biblioteca de referencia de
core
que contiene los módulos de Bicep usados por la plantilla deazd
- Implementa el código mediante
azd deploy
Salida prevista
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-endpoint.region.azurecontainerapps.io/ SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/your-subscription-ID/resourceGroups/your-resource-group/overview
- Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio
Confirmación de la implementación correcta
En Azure Portal, compruebe que la aplicación contenedora por lotes registra cada inserción en Azure PostgreSQL cada 10 segundos.
Copie el nombre de la aplicación contenedora de la salida del terminal.
Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.
En el panel de Container App, seleccione Supervisión>Flujo de registro.
Confirme que el contenedor registra la misma salida que en el terminal anterior.
¿Qué ha ocurrido?
Tras completar correctamente el comando azd up
:
- Azure Developer CLI aprovisionó los recursos de Azure a los que se hace referencia en el directorio
./infra
del proyecto de ejemplo a la suscripción de Azure que especificó. Ahora puede ver esos recursos de Azure en Azure Portal. - La aplicación se implementó en Azure Container Apps. Desde el portal, puede explorar la aplicación totalmente funcional.
Ejecución de la aplicación de Python localmente
Preparación del proyecto
Clone la aplicación Dapr de ejemplo en el equipo local.
git clone https://github.com/Azure-Samples/bindings-dapr-python-cron-postgres.git
Vaya al directorio raíz del ejemplo.
cd bindings-dapr-python-cron-postgres
Ejecución de la aplicación de Dapr mediante la CLI de Dapr
Antes de implementar la aplicación en Azure Container Apps, comience ejecutando el contenedor de PostgreSQL y el servicio de Python localmente con Docker Compose y Dapr.
En el directorio raíz del ejemplo, cambie los directorios a
db
.cd db
Ejecute el contenedor de PostgreSQL con Docker Compose.
docker compose up -d
Abra una nueva ventana de terminal y vaya a
/batch
en el directorio de ejemplo.cd bindings-dapr-python-cron-postgres/batch
Instale las dependencias.
pip install -r requirements.txt
Ejecute la aplicación de servicio Python con Dapr.
dapr run --app-id batch-sdk --app-port 5001 --dapr-http-port 3500 --resources-path ../components -- python3 app.py
El comando
dapr run
ejecuta la aplicación de enlace de Dapr localmente. Una vez que la aplicación se ejecuta correctamente, la ventana de terminal muestra los datos de enlace de salida.Salida prevista
El servicio por lotes escucha los eventos de enlace de entrada de un CRON del sistema y genera el contenido de los datos locales en un enlace de salida de PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
En el terminal de
./db
, detenga el contenedor de PostgreSQL.docker compose stop
Implementación de la plantilla de aplicación Dapr mediante Azure Developer CLI
Ahora que ha ejecutado la aplicación localmente, vamos a implementar la aplicación de enlaces de Dapr en Azure Container Apps mediante azd
. Durante la implementación, intercambiaremos el contenedor local de PostgreSQL para un componente de Azure PostgreSQL.
Preparación del proyecto
Vaya al directorio raíz del ejemplo.
cd bindings-dapr-python-cron-postgres
Aprovisionamiento e implementación mediante Azure Developer CLI
Ejecute
azd init
para inicializar el proyecto.azd init
Cuando se le solicite en el terminal, proporcione los parámetros siguientes.
Parámetro Descripción Nombre del entorno Prefijo del grupo de recursos creado para contener todos los recursos de Azure. Ubicación de Azure Ubicación de Azure para los recursos. Asegúrese de seleccionar una ubicación disponible para Azure PostgreSQL. Suscripción de Azure La suscripción de Azure para los recursos. Ejecute
azd up
para aprovisionar la infraestructura e implementar la aplicación Dapr en Azure Container Apps en un solo comando.azd up
Este proceso puede tardar un tiempo en finalizar. A medida que se completa el comando
azd up
, la salida de la CLI muestra dos vínculos de Azure Portal para supervisar el progreso de la implementación. La salida también muestra cómoazd up
hace lo siguiente:- Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio
./infra
medianteazd provision
. Una vez aprovisionados por Azure Developer CLI, puede acceder a estos recursos a través de Azure Portal. Los archivos que aprovisionan los recursos de Azure incluyen:main.parameters.json
main.bicep
- Un directorio de recursos de
app
organizado por funcionalidad - Biblioteca de referencia de
core
que contiene los módulos de Bicep usados por la plantilla deazd
- Implementa el código mediante
azd deploy
Salida prevista
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-endpoint.region.azurecontainerapps.io/ SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/your-subscription-ID/resourceGroups/your-resource-group/overview
- Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio
Confirmación de la implementación correcta
En Azure Portal, compruebe que la aplicación contenedora por lotes registra cada inserción en Azure PostgreSQL cada 10 segundos.
Copie el nombre de la aplicación contenedora de la salida del terminal.
Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.
En el panel de Container App, seleccione Supervisión>Flujo de registro.
Confirme que el contenedor registra la misma salida que en el terminal anterior.
¿Qué ha ocurrido?
Tras completar correctamente el comando azd up
:
- Azure Developer CLI aprovisionó los recursos de Azure a los que se hace referencia en el directorio
./infra
del proyecto de ejemplo a la suscripción de Azure que especificó. Ahora puede ver esos recursos de Azure en Azure Portal. - La aplicación se implementó en Azure Container Apps. Desde el portal, puede explorar la aplicación totalmente funcional.
Ejecución local de la aplicación .NET
Preparación del proyecto
Clone la aplicación Dapr de ejemplo en el equipo local.
git clone https://github.com/Azure-Samples/bindings-dapr-csharp-cron-postgres.git
Vaya al directorio raíz del ejemplo.
cd bindings-dapr-csharp-cron-postgres
Ejecución de la aplicación de Dapr mediante la CLI de Dapr
Antes de implementar la aplicación en Azure Container Apps, comience ejecutando el contenedor de PostgreSQL y el servicio de .NET localmente con Docker Compose y Dapr.
En el directorio raíz del ejemplo, cambie los directorios a
db
.cd db
Ejecute el contenedor de PostgreSQL con Docker Compose.
docker compose up -d
Abra una nueva ventana de terminal y vaya a
/batch
en el directorio de ejemplo.cd bindings-dapr-csharp-cron-postgres/batch
Instale las dependencias.
dotnet build
Ejecute la aplicación de servicio .NET con Dapr.
dapr run --app-id batch-sdk --app-port 7002 --resources-path ../components -- dotnet run
El comando
dapr run
ejecuta la aplicación de enlace de Dapr localmente. Una vez que la aplicación se ejecuta correctamente, la ventana de terminal muestra los datos de enlace de salida.Salida prevista
El servicio por lotes escucha los eventos de enlace de entrada de un CRON del sistema y genera el contenido de los datos locales en un enlace de salida de PostgreSQL.
== APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch == APP == {"sql": "insert into orders (orderid, customer, price) values (1, 'John Smith', 100.32);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (2, 'Jane Bond', 15.4);"} == APP == {"sql": "insert into orders (orderid, customer, price) values (3, 'Tony James', 35.56);"} == APP == Finished processing batch
En el terminal de
./db
, detenga el contenedor de PostgreSQL.docker compose stop
Implementación de la plantilla de aplicación Dapr mediante Azure Developer CLI
Ahora que ha ejecutado la aplicación localmente, vamos a implementar la aplicación de enlaces de Dapr en Azure Container Apps mediante azd
. Durante la implementación, intercambiaremos el contenedor local de PostgreSQL para un componente de Azure PostgreSQL.
Preparación del proyecto
Vaya al directorio raíz del ejemplo.
cd bindings-dapr-csharp-cron-postgres
Aprovisionamiento e implementación mediante Azure Developer CLI
Ejecute
azd init
para inicializar el proyecto.azd init
Cuando se le solicite en el terminal, proporcione los parámetros siguientes.
Parámetro Descripción Nombre del entorno Prefijo del grupo de recursos creado para contener todos los recursos de Azure. Ubicación de Azure Ubicación de Azure para los recursos. Asegúrese de seleccionar una ubicación disponible para Azure PostgreSQL. Suscripción de Azure La suscripción de Azure para los recursos. Ejecute
azd up
para aprovisionar la infraestructura e implementar la aplicación Dapr en Azure Container Apps en un solo comando.azd up
Este proceso puede tardar un tiempo en finalizar. A medida que se completa el comando
azd up
, la salida de la CLI muestra dos vínculos de Azure Portal para supervisar el progreso de la implementación. La salida también muestra cómoazd up
hace lo siguiente:- Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio
./infra
medianteazd provision
. Una vez aprovisionados por Azure Developer CLI, puede acceder a estos recursos a través de Azure Portal. Los archivos que aprovisionan los recursos de Azure incluyen:main.parameters.json
main.bicep
- Un directorio de recursos de
app
organizado por funcionalidad - Biblioteca de referencia de
core
que contiene los módulos de Bicep usados por la plantilla deazd
- Implementa el código mediante
azd deploy
Salida prevista
Initializing a new project (azd init) Provisioning Azure resources (azd provision) Provisioning Azure resources can take some time You can view detailed progress in the Azure Portal: https://portal.azure.com/#blade/HubsExtension/DeploymentDetailsBlade/overview (✓) Done: Resource group: resource-group-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: dashboard-name (✓) Done: Azure Database for PostgreSQL flexible server: postgres-server (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: container-apps-env-name (✓) Done: Container App: container-app-name Deploying services (azd deploy) (✓) Done: Deploying service api - Endpoint: https://your-container-app-endpoint.region.azurecontainerapps.io/ SUCCESS: Your Azure app has been deployed! You can view the resources created under the resource group resource-group-name in Azure Portal: https://portal.azure.com/#@/resource/subscriptions/your-subscription-ID/resourceGroups/your-resource-group/overview
- Crea y configura todos los recursos necesarios de Azure a través de los archivos de Bicep proporcionados en el directorio
Confirmación de la implementación correcta
En Azure Portal, compruebe que la aplicación contenedora por lotes registra cada inserción en Azure PostgreSQL cada 10 segundos.
Copie el nombre de la aplicación contenedora de la salida del terminal.
Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.
En el panel de Container App, seleccione Supervisión>Flujo de registro.
Confirme que el contenedor registra la misma salida que en el terminal anterior.
¿Qué ha ocurrido?
Tras completar correctamente el comando azd up
:
- Azure Developer CLI aprovisionó los recursos de Azure a los que se hace referencia en el directorio
./infra
del proyecto de ejemplo a la suscripción de Azure que especificó. Ahora puede ver esos recursos de Azure en Azure Portal. - La aplicación se implementó en Azure Container Apps. Desde el portal, puede explorar la aplicación totalmente funcional.
Limpieza de recursos
Si no va a seguir usando esta aplicación, elimine los recursos de Azure que ha aprovisionado con el siguiente comando.
azd down
Pasos siguientes
- Obtenga más información sobre la Implementación de aplicaciones Dapr en Azure Container Apps.
- Habilitar la autenticación mediante tokens para solicitudes de Dapr.
- Obtenga más información sobre Azure Developer CLI y Cómo hacer que sus aplicaciones sean compatibles con
azd
. - Escalar las aplicaciones Dapr mediante escaladores KEDA
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de