AYUDA .NET

Azure.Messaging.ServiceBus Ejemplo C# (Cómo Funciona)

Chipego
Chipego Kalinda
13 de agosto, 2024
Compartir:

En el interconectado panorama digital actual, la comunicación eficaz es la piedra angular del éxito de las empresas. Tanto si se trata de transmitir datos críticos entre aplicaciones como de garantizar actualizaciones en tiempo real a través de sistemas distribuidos, es indispensable contar con una infraestructura de mensajería fiable.

Azure Service Bus, un servicio de mensajería en la nube, emerge como una solución robusta que permite a los desarrolladores construir aplicaciones escalables, desacopladas y resilientes. Adentrémonos en el ámbito de Azure Service Bus para comprender su importancia y explorar sus innumerables capacidades. Más adelante en este artículo, también analizaremos IronPDF para gestionar, generar y leer documentos PDF.

Entender Azure Service Bus

Azure Service Bus es un intermediario de mensajes de integración empresarial totalmente gestionado que facilita la comunicación fiable entre aplicaciones y servicios, ya se ejecuten en la nube, en las instalaciones o en entornos híbridos.

Proporciona funciones de mensajería flexibles, incluidos mecanismos de cola y publicación/suscripción, para permitir una comunicación fluida entre componentes dispares de un sistema distribuido. Además, admite mensajes por lotes, lo que permite enviar varios mensajes sin superar la limitación de tamaño total.

Azure Service Bus ofrece las siguientes ventajas:

  1. Desacoplamiento de Aplicaciones: Service Bus te permite separar aplicaciones y servicios entre sí. Este desacoplamiento mejora la fiabilidad y la escalabilidad.

  2. Balanceo de Carga: Equilibra el trabajo entre los trabajadores competidores, asegurando una utilización eficiente de los recursos.

  3. Transferencia de Mensajes: Los datos se transfieren entre aplicaciones y servicios usando mensajes. El cuerpo de estos mensajes puede contener varios tipos de datos, como JSON, XML o texto sin formato.

  4. Escenarios de Mensajería: Los escenarios comunes incluyen la transferencia de datos comerciales (por ejemplo, órdenes de venta), el balanceo de carga y la habilitación de relaciones entre publicadores y suscriptores utilizando temas y suscripciones.

  5. Transacciones: Service Bus admite transacciones atómicas, lo que permite múltiples operaciones dentro de un solo ámbito de transacción. Una transacción tendría múltiples llamadas concurrentes, mientras que un lote de mensajes tendría una única llamada.

  6. Sesiones de Mensajes: Facilita la coordinación a gran escala de flujos de trabajo y las transferencias de mensajes ordenadas.

Principales características y funciones

  1. Colas y Temas: Azure Service Bus ofrece tanto colas como temas como canales de comunicación. Las colas permiten la comunicación punto a punto, garantizando que cada mensaje sea procesado por un solo receptor, lo que las hace ideales para la distribución de la carga de trabajo y los escenarios de nivelación de carga. Por otro lado, los temas admiten patrones de mensajería de publicación/suscripción, lo que permite que varios suscriptores reciban mensajes relevantes de forma independiente y facilita arquitecturas escalables basadas en eventos.

  2. Entrega de mensajes fiable: Con Azure Service Bus, la entrega de mensajes es inherentemente fiable. Garantiza la persistencia de los mensajes, puede configurar el gestor de mensajes y errores, la tolerancia a fallos y la semántica de entrega al menos una vez, lo que minimiza el riesgo de pérdida o duplicación de datos. Además, admite transacciones, lo que permite realizar operaciones atómicas a través de múltiples mensajes, garantizando así la integridad de los datos.

  3. Políticas de mensajes muertos y reintentos: Para manejar mensajes erróneos de manera efectiva, Azure Service Bus ofrece capacidades de mensajes muertos, permitiendo que los mensajes problemáticos se muevan automáticamente a una cola separada para análisis y solución de problemas. Además, ofrece políticas de reintento flexibles, lo que permite a los desarrolladores configurar reintentos automáticos con estrategias de retroceso exponencial, mejorando la resistencia de las aplicaciones ante fallos transitorios.

  4. Particionamiento y Escalamiento: Azure Service Bus admite la partición de entidades de mensajería para distribuir la carga de trabajo a través de múltiples nodos, asegurando la escalabilidad horizontal y un alto rendimiento. Esta capacidad es crucial para gestionar grandes volúmenes de mensajes y acomodar cargas de trabajo fluctuantes sin comprometer el rendimiento ni la fiabilidad.

  5. Integración con el ecosistema de Azure: Azure Service Bus se integra perfectamente con otros servicios de Azure, como Azure Functions, Logic Apps, Event Grid y Azure Kubernetes Service (AKS), lo que permite a los desarrolladores crear soluciones completas con facilidad. Tanto si se trata de activar funciones sin servidor en respuesta a mensajes entrantes como de orquestar flujos de trabajo complejos mediante Logic Apps, Azure Service Bus sirve de eje para crear arquitecturas sólidas basadas en eventos.

Introducción a IronPDF

Azure.Messaging.ServiceBus Ejemplo C# (Cómo Funciona): Figura 1

IronPDF es una potente biblioteca de PDF en C# que te permite generar, editar y extraer contenido de documentos PDF en proyectos .NET. Estas son algunas de sus principales características:

  1. Conversión de HTML a PDF:

    • Convierte contenidos HTML, CSS y JavaScript a formato PDF.

    • Utiliza el motor de renderizado de Chrome para obtener PDF perfectos.

    • Genere PDF a partir de URL, archivos HTML o cadenas HTML.
  2. Conversión de Imágenes y Contenido:

    • Convierte imágenes a y desde PDF.

    • Extraiga texto e imágenes de PDF existentes.

    • Compatible con varios formatos de imagen.
  3. Edición y Manipulación:

    • Establezca las propiedades, la seguridad y los permisos de los archivos PDF.

    • Añade firmas digitales.

    • Editar metadatos e historial de revisiones.
  4. Soporte multiplataforma:

    • Funciona con .NET Core (8, 7, 6, 5 y 3.1+), .NET Standard (2.0+) y .NET Framework (4.6.2+).

    • Compatible con Windows, Linux y macOS.

    • Disponible en NuGet para facilitar la instalación.

Generar un documento PDF usando IronPDF y Azure.Messaging.ServiceBus

Para empezar, cree una aplicación de consola utilizando Visual Studio como se indica a continuación.

Ejemplo de Azure.Messaging.ServiceBus en C# (Cómo Funciona): Figura 2

Nombre del proyecto

Azure.Messaging.ServiceBus Ejemplo C# (Cómo Funciona): Figura 3

Proporcione la versión .NET

Ejemplo de Azure.Messaging.ServiceBus C# (Cómo Funciona): Figura 4

Instale el paquete IronPDF.

Azure.Messaging.ServiceBus Ejemplo C# (Cómo Funciona): Figura 5

Creación de Azure Service Bus

Cree un espacio de nombres con un nombre único en Azure. Un espacio de nombres es un contenedor para los recursos del Bus de Servicios como colas y temas dentro de su aplicación.

A continuación se explica cómo crear un espacio de nombres:

  1. Inicie sesión en el portal Azure.

  2. Vaya a la página "Todos los servicios".

  3. En el panel de navegación izquierdo, seleccione "Integración" en la lista de categorías.

  4. Pase el ratón por encima de "Bus de servicio" y haga clic en el botón "+" del mosaico Bus de servicio.

    Azure.Messaging.ServiceBus Ejemplo C# (Cómo Funciona): Figura 6

    Para configurar la pestaña Conceptos básicos en la página Crear espacio de nombres, siga estos pasos:

  5. Suscripción: Selecciona la suscripción de Azure donde deseas crear el espacio de nombres.

  6. Grupo de recursos: Elija un grupo de recursos existente donde se ubicará el espacio de nombres, o cree uno nuevo.

  7. Nombre del espacio de nombres: Introduzca un nombre para el espacio de nombres. Asegúrese de que el nombre cumple los siguientes criterios:

    • Debe ser único en Azure.

    • La longitud debe estar comprendida entre 6 y 50 caracteres.

    • Sólo puede contener letras, números y guiones "-".

    • Debe empezar por una letra y terminar por una letra o un número.

    • No puede terminar con "-sb" o "-mgmt".
  8. Ubicación: Seleccione la región donde se debería alojar su espacio de nombres.

  9. Nivel de precios: Elige el nivel de precios (Básico, Estándar o Premium) para el espacio de nombres. Para este ejemplo, seleccione Estándar.

  10. Seleccione Revisar + Crear en la parte inferior de la página.

    Azure.Messaging.ServiceBus Ejemplo C# (Cómo Funciona): Figura 7

  11. Seleccione Crear en la página Revisar + Crear.

  12. Una vez que el despliegue del recurso sea exitoso, Vaya al recurso.

    Verá la página de inicio de su espacio de nombres Service Bus.

Creación de colas de bus de servicio en el portal Azure

Para configurar una cola en su espacio de nombres Service Bus, siga estos pasos:

  1. Navegar a Colas: Dirígete a la página del Espacio de Nombres de Service Bus en el portal de Azure. Seleccione "Colas" en el menú de navegación de la izquierda.

  2. Crear una nueva cola: En la página de Colas, haga clic en el botón "+ Cola" en la barra de herramientas.

  3. Configurar cola: Ingrese un nombre para su cola en el campo proporcionado. Deje los demás ajustes con sus valores por defecto. Las opciones que debe configurar al crear una cola de Azure Service Bus:

    1. Nombre: Este es el identificador único para tu cola. Elija un nombre descriptivo y fácil de recordar.

    2. Tamaño máximo de cola: Esto define la capacidad máxima de almacenamiento de la cola. Puedes configurarlo en 1 GB, 2 GB, 5 GB, 10 GB, 20 GB, 40 GB, 80 GB o 100 GB. Para su caso, está configurado en 1 GB.

    3. Conteo Máximo de Entrega: Esto especifica el número máximo de veces que un mensaje puede ser entregado antes de ser enviado a la cola de mensajes muertos o descartado. Esto ayuda a gestionar los fallos en el procesamiento de mensajes.

    4. Tiempo de Vida del Mensaje (TTL): Esto determina cuánto tiempo permanece un mensaje en la cola antes de que caduque. Puede configurarlo en días, horas, minutos y segundos. Una vez alcanzado el TTL, los mensajes de letra muerta se descartan o se mueven a la cola de letra muerta si ésta está activada.

    5. Duración del Bloqueo: Esta es la cantidad de tiempo que un mensaje está bloqueado para ser procesado por un receptor. Durante este tiempo, otros receptores no pueden procesar el mismo mensaje. Puede establecer esta duración en días, horas, minutos y segundos.

    6. Habilitar Colas de Mensajes No Entregados al Expirar el Mensaje: Cuando está habilitado, los mensajes que expiran (es decir, superan su TTL) se trasladan a la cola de mensajes no entregados en lugar de ser descartados. Esto permite inspeccionar y tratar más a fondo los mensajes caducados.

    7. Habilitar Particionamiento: Esta opción permite el particionamiento de la cola entre múltiples corredores de mensajes, lo que puede mejorar la escalabilidad y el rendimiento. La partición es útil para manejar grandes volúmenes de mensajes.

    Estos ajustes le ayudan a controlar el comportamiento y el rendimiento de su cola de Azure Service Bus, garantizando que cumpla los requisitos de su aplicación.

    Azure.Messaging.ServiceBus Ejemplo C# (Cómo Funciona): Figura 8

  4. Completar Creación: Haz clic en el botón "Crear" para finalizar la creación de la cola. Estos pasos garantizan la creación correcta de una cola dentro de su espacio de nombres de Service Bus mediante el portal de Azure.

    Instale Azure.Messaging.ServiceBus, una biblioteca de cliente de Service Bus, para conectarse a la cola de Azure mediante una cadena de conexión.

    Ejemplo de Azure.Messaging.ServiceBus C# (Cómo Funciona): Figura 9

    Añade el siguiente código para enviar y recibir mensajes utilizando Azure.Messaging.ServiceBus.

using Azure.Messaging.ServiceBus;
namespace CodeSample
{
    public static class AzureServiceBusDemo
    {
        public static async Task Execute()
        {
            string connectionString = "Endpoint=sb://iron-articles.servicebus.windows.net/;SharedAccessKeyName=all;SharedAccessKey=uqQIzpuc2HxbnAb9keqTINvzfTcFbkkU0+ASbJZ/tow=;EntityPath=ironpdf";
            string queName = "ironpdf";
            Console.WriteLine("Demo IronPDF with Azure.Messaging.ServiceBus");
            Installation.EnableWebSecurity = true;
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo IronPDF with Azure.Messaging.ServiceBus</h1>";
            content += "<h2>Send Message to Azure.Messaging.ServiceBus Queue: ironpdf</h2>";
            await using var client = new ServiceBusClient(connectionString);
            var msgText = "IronPDF is Awesome Package";
            content += $"<p>Message:{msgText}</p>";
            var tx = client.CreateSender(queName);
            await tx.SendMessageAsync(new ServiceBusMessage(msgText)); // message await sender
            Console.WriteLine($"Sent Below message at:{DateTime.Now}");
            content += $"<p>Sent Below message at:{DateTime.Now}</p>";
            Console.Read(); // wait for user input to read the message;
            var rx = client.CreateReceiver(queName);
            var msg = await rx.ReceiveMessageAsync(); // receive messages
            content += "<h2>Receive Message from Azure.Messaging.ServiceBus Queue: ironpdf</h2>";
            content += $"<p>Recieved Below message at:{DateTime.Now}</p>";
            Console.WriteLine($"Recieved Below message at:{DateTime.Now}");
            content += $"<p>MessageID={msg}</p>";
            Console.WriteLine($"MessageID={msg}");
            content += $"<p>Message Received: {msg.Body}</p>";
            Console.WriteLine($"Message Received: {msg.Body}");
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeAzureServiceBusQueueAndIronPdf.pdf");
        }
    }
}
using Azure.Messaging.ServiceBus;
namespace CodeSample
{
    public static class AzureServiceBusDemo
    {
        public static async Task Execute()
        {
            string connectionString = "Endpoint=sb://iron-articles.servicebus.windows.net/;SharedAccessKeyName=all;SharedAccessKey=uqQIzpuc2HxbnAb9keqTINvzfTcFbkkU0+ASbJZ/tow=;EntityPath=ironpdf";
            string queName = "ironpdf";
            Console.WriteLine("Demo IronPDF with Azure.Messaging.ServiceBus");
            Installation.EnableWebSecurity = true;
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            var content = "<h1>Demo IronPDF with Azure.Messaging.ServiceBus</h1>";
            content += "<h2>Send Message to Azure.Messaging.ServiceBus Queue: ironpdf</h2>";
            await using var client = new ServiceBusClient(connectionString);
            var msgText = "IronPDF is Awesome Package";
            content += $"<p>Message:{msgText}</p>";
            var tx = client.CreateSender(queName);
            await tx.SendMessageAsync(new ServiceBusMessage(msgText)); // message await sender
            Console.WriteLine($"Sent Below message at:{DateTime.Now}");
            content += $"<p>Sent Below message at:{DateTime.Now}</p>";
            Console.Read(); // wait for user input to read the message;
            var rx = client.CreateReceiver(queName);
            var msg = await rx.ReceiveMessageAsync(); // receive messages
            content += "<h2>Receive Message from Azure.Messaging.ServiceBus Queue: ironpdf</h2>";
            content += $"<p>Recieved Below message at:{DateTime.Now}</p>";
            Console.WriteLine($"Recieved Below message at:{DateTime.Now}");
            content += $"<p>MessageID={msg}</p>";
            Console.WriteLine($"MessageID={msg}");
            content += $"<p>Message Received: {msg.Body}</p>";
            Console.WriteLine($"Message Received: {msg.Body}");
            var pdf = renderer.RenderHtmlAsPdf(content);
            // Export to a file or Stream
            pdf.SaveAs("AwesomeAzureServiceBusQueueAndIronPdf.pdf");
        }
    }
}

Código Explicación

  1. Cadena de conexión y nombre de la cola:

    • La variable connectionString contiene los detalles de conexión para tu espacio de nombres de Azure Service Bus. Especifica el punto de conexión, la clave de acceso compartida y la ruta de la entidad (nombre de la cola).

    • La variable queName contiene el nombre de la cola del Service Bus con la que deseas trabajar.
  2. Configuración de demostración:

    • El código comienza imprimiendo un mensaje: "Demo IronPDF con Azure.Messaging.ServiceBus"

    • Permite la seguridad web utilizando Installation.EnableWebSecurity = true;.
  3. Creando un Cliente de Service Bus:

    • El ServiceBusClient se crea utilizando la cadena de conexión proporcionada.

    • Este cliente le permite interactuar con entidades de Service Bus (colas, temas, etc.).
  4. Enviando un mensaje:

    • Un mensaje con el contenido "IronPDF is Awesome Package" se envía a la cola especificada utilizando el método CreateSender.

    • El mensaje se crea utilizando new ServiceBusMessage(msgText).

    • La marca de tiempo del mensaje enviado se imprime en la consola.
  5. Recibiendo un mensaje:

    • Un receptor se crea para la misma cola usando CreateReceiver.

    • El código espera la entrada del usuario (usando Console.Read()) para simular el procesamiento de mensajes.

    • Cuando se recibe un mensaje, su ID y cuerpo se imprimen en la consola.
  6. Generando un PDF:

    • El renderizador crea un PDF a partir del contenido HTML (incluidos los mensajes enviados y recibidos).

    • El PDF resultante se guarda como "AwesomeAzureServiceBusQueueAndIronPdf.pdf"

Salida

Azure.Messaging.ServiceBus Ejemplo C# (Cómo funciona): Figura 10

PDF

Azure.Messaging.ServiceBus Ejemplo C# (Cómo Funciona): Figura 11

Licencias IronPDF

El paquete IronPDF requiere una licencia para ejecutarse y generar el PDF. Añada el código siguiente al inicio de la aplicación antes de acceder al paquete.

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";

Una licencia de prueba está disponible en la Página de Licencia de Prueba de IronPDF.

Conclusión

En una era caracterizada por la transformación digital y los rápidos avances tecnológicos, Azure Service Bus emerge como un componente fundamental en el viaje de modernización de las empresas de todo el mundo. Al proporcionar capacidades de mensajería fiables, escalables y flexibles, permite a los desarrolladores crear soluciones resistentes y ágiles que pueden adaptarse a los cambiantes requisitos empresariales.

Ya sea facilitando una integración perfecta, permitiendo arquitecturas basadas en eventos o garantizando la comunicación asíncrona, Azure Service Bus desempeña un papel transformador en el impulso de la innovación y la aceleración de las iniciativas digitales en todos los sectores.

A medida que las organizaciones continúan adoptando paradigmas nativos de la nube y arquitecturas distribuidas, Azure Service Bus se erige como un testimonio del compromiso de Microsoft para capacitar a los desarrolladores y las empresas en su viaje a la nube. IronPDF simplifica la generación de PDF dentro de aplicaciones .NET, ofreciendo flexibilidad y funcionalidad para crear documentos de calidad profesional directamente desde el código.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
WebGrease .NET Core (Cómo funciona para desarrolladores)
SIGUIENTE >
Simple Injector C# (Cómo funciona para desarrolladores)