Buscar contenidos

miércoles, 14 de agosto de 2024

Ejemplo Azure Service Bus, N:1, N:N

El patrón arquitectónico Broker es utilizado para la implementación de sistemas de software distribuidos con componentes desacoplados.



Funciona como un intermediario entre el cliente y el servidor encargado de realizar la coordinación de mensajes, solicitudes, respuestas etc.



La arquitectura broker tiene como objetivo poner un intermediario entre los clientes y el servidor o múltiples de estos, tiene el objetivo de gestionar el envío de información o la ejecución de tareas, al tener esta arquitectura permite a una aplicion tener funciones desacopladas y descentralizadas lo que facilita la escalabilidad y la seguridad del sistema informático.











   static async Task Main(string[] args)

   {

 

       // Reemplaza con tu cadena de conexión de Service Bus

       string connectionString = " ";

       string topicName = "topic_poc_01";

       string subscription = "subscription_poc_02";

 

       // Crear un cliente de Service Bus

       ServiceBusClient client = new ServiceBusClient(connectionString);

 

       try

       {

           // Enviar un mensaje

           await SendMessageAsync(client, topicName, "Hola desde Service Bus");

 

       

           // Recibir y eliminar un mensaje

           await ReceiveAndDeleteMessageAsync(client, topicName, subscription);

       }

       finally

       {

           // Cerrar el cliente

            await client.DisposeAsync();

       }

    

   }

 

 

   static async Task SendMessageAsync(ServiceBusClient client, string topicName, string messageBody)

   {

       // Crear un emisor para el tópico

       ServiceBusSender sender = client.CreateSender(topicName);

 

       // Crear un mensaje

       //ServiceBusMessage message = new ServiceBusMessage(messageBody);

 

       // Crear un mensaje con la propiedad personalizada

       ServiceBusMessage message = new ServiceBusMessage(messageBody);

       message.ApplicationProperties.Add("tipo", "orden");

 

 

       try

       {

           // Enviar el mensaje

           await sender.SendMessageAsync(message);

 

              

           Console.WriteLine("Mensaje enviado correctamente.");

       }

       finally

       {

           // Cerrar el emisor

           await sender.DisposeAsync();

       }

   }

 

   static async Task ReceiveAndDeleteMessageAsync(ServiceBusClient client, string topicName, string subscription)

   {

       // Crear un receptor para el tópico

       ServiceBusReceiver receiver = client.CreateReceiver(topicName, subscription);

 

       try

       {

           // Recibir un mensaje

           ServiceBusReceivedMessage receivedMessage = await receiver.ReceiveMessageAsync();

 

           if (receivedMessage != null)

           {

               Console.WriteLine("Mensaje recibido: " + receivedMessage.Body.ToString());

               await receiver.CompleteMessageAsync(receivedMessage);

               Console.WriteLine("Mensaje eliminado correctamente.");

           }

           else

           {

               Console.WriteLine("No se encontraron mensajes.");

           }

       }

       catch (Exception ex) {

           Console.WriteLine(ex.Message);

       }

       finally

       {

           // Cerrar el receptor

           await receiver.DisposeAsync();

       }

   }

No hay comentarios:

Publicar un comentario