Tutorial: Comunicación de microservicios mediante la publicación y suscripción de Dapr
En este tutorial, creará microservicios de publicador y suscriptor que aprovechan laAPI Pub/Sub de Dapr para comunicarse mediante mensajes en arquitecturas controladas por eventos. Hará lo siguiente:
- Cree un microservicio de publicador y un microservicio de suscriptor que aprovechen la API de pub/sub de Dapr para comunicarse mediante mensajes para arquitecturas controladas por eventos.
- Implemente la aplicación en Azure Container Apps a través de Azure Developer CLI con Bicep proporcionado.
El proyecto de pub/sub de ejemplo incluye:
- Un servicio generador de mensajes (publicador)
checkout
que genera mensajes de un tema específico. - Un servicio (suscriptor)
order-processor
que escucha mensajes del serviciocheckout
de un tema específico.
Requisitos previos
- Instalar Azure Developer CLI
- Instalar e inicializar Dapr
- Docker Desktop
- Instalar Git
Ejecución de la aplicación Node.js. local
Antes de implementar la aplicación en Azure Container Apps, ejecute los servicios order-processor
y checkout
localmente con Dapr y Azure Service Bus.
Preparación del proyecto
Clone la aplicación de ejemplo en el equipo local.
git clone https://github.com/Azure-Samples/pubsub-dapr-nodejs-servicebus.git
Vaya al directorio raíz del ejemplo.
cd pubsub-dapr-nodejs-servicebus
Ejecute las aplicaciones mediante la CLI de Dapr
Comience ejecutando el servicio de suscriptor order-processor
.
En el directorio raíz del ejemplo, cambie los directorios a
order-processor
.cd order-processor
Instale las dependencias.
npm install
Ejecute el servicio
order-processor
.dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --resources-path ../components -- npm run start
En una nueva ventana de terminal, desde el directorio raíz del ejemplo, vaya al servicio de publicador de
checkout
.cd checkout
Instale las dependencias.
npm install
Ejecute el servicio
checkout
.dapr run --app-id checkout --app-protocol http --resources-path ../components -- npm run start
Salida prevista
En ambos terminales, el servicio
checkout
publica 10 mensajes recibidos por el servicioorder-processor
antes de salir.Salida de
checkout
:== APP == Published data: {"orderId":1} == APP == Published data: {"orderId":2} == APP == Published data: {"orderId":3} == APP == Published data: {"orderId":4} == APP == Published data: {"orderId":5} == APP == Published data: {"orderId":6} == APP == Published data: {"orderId":7} == APP == Published data: {"orderId":8} == APP == Published data: {"orderId":9} == APP == Published data: {"orderId":10}
Salida de
order-processor
:== APP == Subscriber received: {"orderId":1} == APP == Subscriber received: {"orderId":2} == APP == Subscriber received: {"orderId":3} == APP == Subscriber received: {"orderId":4} == APP == Subscriber received: {"orderId":5} == APP == Subscriber received: {"orderId":6} == APP == Subscriber received: {"orderId":7} == APP == Subscriber received: {"orderId":8} == APP == Subscriber received: {"orderId":9} == APP == Subscriber received: {"orderId":10}
Asegúrese de que ambas aplicaciones se han detenido mediante la ejecución de los siguientes comandos. En el terminal de extracción:
dapr stop --app-id checkout
En el terminal de procesador de pedidos:
dapr stop --app-id order-processor
Implemente la plantilla de aplicación mediante Azure Developer CLI
Implemente la aplicación en Azure Container Apps mediante azd
.
Preparación del proyecto
En una nueva ventana de terminal, vaya al directorio raíz del ejemplo.
cd pubsub-dapr-nodejs-servicebus
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. Suscripción de Azure La suscripción de Azure para los recursos. Ejecute
azd up
para aprovisionar la infraestructura e implementar la aplicación en Azure Container Apps con 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 (✓) Done: Resource group: resource-group-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: portal-dashboard-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: ca-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-orders-name Deploying services (azd deploy) (✓) Done: Deploying service checkout (✓) Done: Deploying service orders - Endpoint: https://ca-orders-name.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/subscription-id/resourceGroups/resource-group-name/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 el servicio checkout
está publicando mensajes en el tema de Azure Service Bus.
Copie el nombre de la aplicación contenedora de
checkout
de la salida del terminal.Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.
En el panel Container Apps, seleccione Supervisión>Flujo de registro.
Confirme que el contenedor de
checkout
registra la misma salida que en el terminal anterior.Haga lo mismo para el servicio
order-processor
.
¿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 en la aplicación totalmente funcional.
Ejecución de la aplicación de Python localmente
Antes de implementar la aplicación en Azure Container Apps, ejecute los servicios order-processor
y checkout
localmente con Dapr y Azure Service Bus.
Preparación del proyecto
Clone la aplicación de ejemplo en el equipo local.
git clone https://github.com/Azure-Samples/pubsub-dapr-python-servicebus.git
Vaya al directorio raíz del ejemplo.
cd pubsub-dapr-python-servicebus
Ejecute las aplicaciones mediante la CLI de Dapr
Comience ejecutando el servicio de suscriptor order-processor
.
En el directorio raíz del ejemplo, cambie los directorios a
order-processor
.cd order-processor
Instale las dependencias.
pip3 install -r requirements.txt
Ejecute el servicio
order-processor
.
En una nueva ventana de terminal, desde el directorio raíz del ejemplo, vaya al servicio de publicador de
checkout
.cd checkout
Instale las dependencias.
pip3 install -r requirements.txt
Ejecute el servicio
checkout
.
Salida prevista
En ambos terminales, el servicio checkout
publica 10 mensajes recibidos por el servicio order-processor
antes de salir.
Salida de checkout
:
== APP == Published data: {"orderId":1}
== APP == Published data: {"orderId":2}
== APP == Published data: {"orderId":3}
== APP == Published data: {"orderId":4}
== APP == Published data: {"orderId":5}
== APP == Published data: {"orderId":6}
== APP == Published data: {"orderId":7}
== APP == Published data: {"orderId":8}
== APP == Published data: {"orderId":9}
== APP == Published data: {"orderId":10}
Salida de order-processor
:
== APP == Subscriber received: {"orderId":1}
== APP == Subscriber received: {"orderId":2}
== APP == Subscriber received: {"orderId":3}
== APP == Subscriber received: {"orderId":4}
== APP == Subscriber received: {"orderId":5}
== APP == Subscriber received: {"orderId":6}
== APP == Subscriber received: {"orderId":7}
== APP == Subscriber received: {"orderId":8}
== APP == Subscriber received: {"orderId":9}
== APP == Subscriber received: {"orderId":10}
Asegúrese de que ambas aplicaciones se han detenido mediante la ejecución de los siguientes comandos. En el terminal de extracción:
dapr stop --app-id checkout
En el terminal de procesador de pedidos:
dapr stop --app-id order-processor
Implemente la plantilla de aplicación mediante Azure Developer CLI
Implemente la aplicación en Azure Container Apps mediante azd
.
Preparación del proyecto
En una nueva ventana de terminal, vaya al directorio raíz del ejemplo.
cd pubsub-dapr-python-servicebus
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. Suscripción de Azure La suscripción de Azure para los recursos. Ejecute
azd up
para aprovisionar la infraestructura e implementar la aplicación en Azure Container Apps con 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 (✓) Done: Resource group: resource-group-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: portal-dashboard-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: ca-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-orders-name Deploying services (azd deploy) (✓) Done: Deploying service checkout (✓) Done: Deploying service orders - Endpoint: https://ca-orders-name.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/subscription-id/resourceGroups/resource-group-name/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 el servicio checkout
está publicando mensajes en el tema de Azure Service Bus.
Copie el nombre de la aplicación contenedora de
checkout
de la salida del terminal.Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.
En el panel Container Apps, seleccione Supervisión>Flujo de registro.
Confirme que el contenedor de
checkout
registra la misma salida que en el terminal anterior.Haga lo mismo para el servicio
order-processor
.
¿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 en la aplicación totalmente funcional.
Ejecución local de las aplicaciones .NET
Antes de implementar la aplicación en Azure Container Apps, ejecute los servicios order-processor
y checkout
localmente con Dapr y Azure Service Bus.
Preparación del proyecto
Clone la aplicación de ejemplo en el equipo local.
git clone https://github.com/Azure-Samples/pubsub-dapr-csharp-servicebus.git
Vaya al directorio raíz del ejemplo.
cd pubsub-dapr-csharp-servicebus
Ejecute las aplicaciones mediante la CLI de Dapr
Comience ejecutando el servicio de suscriptor de order-processor
En el directorio raíz del ejemplo, cambie los directorios a
order-processor
.cd order-processor
Instale las dependencias.
dotnet build
Ejecute el servicio
order-processor
.dapr run --app-id order-processor --resources-path ../components/ --app-port 7001 -- dotnet run --project .
En una nueva ventana de terminal, desde el directorio raíz del ejemplo, vaya al servicio de publicador de
checkout
.cd checkout
Instale las dependencias.
dotnet build
Ejecute el servicio
checkout
.dapr run --app-id checkout --resources-path ../components/ -- dotnet run --project .
Salida prevista
En ambos terminales, el servicio
checkout
publica 10 mensajes recibidos por el servicioorder-processor
antes de salir.Salida de
checkout
:== APP == Published data: {"orderId":1} == APP == Published data: {"orderId":2} == APP == Published data: {"orderId":3} == APP == Published data: {"orderId":4} == APP == Published data: {"orderId":5} == APP == Published data: {"orderId":6} == APP == Published data: {"orderId":7} == APP == Published data: {"orderId":8} == APP == Published data: {"orderId":9} == APP == Published data: {"orderId":10}
Salida de
order-processor
:== APP == Subscriber received: {"orderId":1} == APP == Subscriber received: {"orderId":2} == APP == Subscriber received: {"orderId":3} == APP == Subscriber received: {"orderId":4} == APP == Subscriber received: {"orderId":5} == APP == Subscriber received: {"orderId":6} == APP == Subscriber received: {"orderId":7} == APP == Subscriber received: {"orderId":8} == APP == Subscriber received: {"orderId":9} == APP == Subscriber received: {"orderId":10}
Asegúrese de que ambas aplicaciones se han detenido mediante la ejecución de los siguientes comandos. En el terminal de extracción.
dapr stop --app-id checkout
En el terminal de procesador de pedidos:
dapr stop --app-id order-processor
Implemente la plantilla de aplicación mediante Azure Developer CLI
Implemente la aplicación en Azure Container Apps mediante azd
.
Preparación del proyecto
En una nueva ventana de terminal, vaya al directorio raíz del ejemplo.
cd pubsub-dapr-csharp-servicebus
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. Suscripción de Azure La suscripción de Azure para los recursos. Ejecute
azd up
para aprovisionar la infraestructura e implementar la aplicación en Azure Container Apps con 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 (✓) Done: Resource group: resource-group-name (✓) Done: Application Insights: app-insights-name (✓) Done: Portal dashboard: portal-dashboard-name (✓) Done: Log Analytics workspace: log-analytics-name (✓) Done: Key vault: key-vault-name (✓) Done: Container Apps Environment: ca-env-name (✓) Done: Container App: ca-checkout-name (✓) Done: Container App: ca-orders-name Deploying services (azd deploy) (✓) Done: Deploying service checkout (✓) Done: Deploying service orders - Endpoint: https://ca-orders-name.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/subscription-id/resourceGroups/resource-group-name/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 el servicio checkout
está publicando mensajes en el tema de Azure Service Bus.
Copie el nombre de la aplicación contenedora de
checkout
de la salida del terminal.Inicie sesión en Azure Portal y busque el recurso de aplicación contenedora por nombre.
En el panel Container Apps, seleccione Supervisión>Flujo de registro.
Confirme que el contenedor de
checkout
registra la misma salida que en el terminal anterior.Haga lo mismo para el servicio
order-processor
.
¿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 en 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 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
. - Escale las aplicaciones mediante escaladores KEDA