Ir para o conteúdo do rodapé
AJUDA DO .NET

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona)

No cenário digital interconectado de hoje, a comunicação eficiente é a pedra angular do sucesso empresarial. Seja para transmitir dados críticos entre aplicações ou para garantir atualizações em tempo real em sistemas distribuídos, uma infraestrutura de mensagens confiável é indispensável.

O Azure Service Bus , um serviço de mensagens baseado na nuvem, surge como uma solução robusta que permite aos desenvolvedores criar aplicações escaláveis, independentes e resilientes. Vamos mergulhar no universo do Azure Service Bus para entender sua importância e explorar suas inúmeras funcionalidades. Mais adiante neste artigo, também analisaremos o IronPDF para gerenciar, gerar e ler documentos PDF.

Entendendo o Azure Service Bus

O Azure Service Bus é um agente de mensagens de integração empresarial totalmente gerenciado que facilita a comunicação confiável entre aplicativos e serviços, estejam eles em execução na nuvem, em ambientes locais ou híbridos.

Ele oferece recursos flexíveis de mensagens, incluindo mecanismos de filas e publicação/assinatura, para permitir a comunicação perfeita entre componentes distintos de um sistema distribuído. Além disso, permite o envio de mensagens em lote, o que possibilita o envio de múltiplas mensagens sem exceder o limite de tamanho total.

O Azure Service Bus oferece os seguintes benefícios:

  1. Desacoplamento de Aplicações: O Service Bus permite separar aplicações e serviços uns dos outros. Esse desacoplamento aumenta a confiabilidade e a escalabilidade.
  2. Balanceamento de carga: Distribui o trabalho entre os trabalhadores que competem entre si, garantindo a utilização eficiente dos recursos.
  3. Transferência de mensagens: Os dados são transferidos entre aplicativos e serviços por meio de mensagens. O corpo dessas mensagens pode conter vários tipos de dados, como JSON, XML ou texto simples.
  4. Cenários de mensagens: Os cenários comuns incluem a transferência de dados comerciais (por exemplo, pedidos de venda), balanceamento de carga e a viabilização de relacionamentos entre editores e assinantes usando tópicos e assinaturas.
  5. Transações: O Service Bus suporta transações atômicas, permitindo múltiplas operações dentro de um único escopo de transação. Uma transação envolveria múltiplas chamadas simultâneas, enquanto um lote de mensagens envolveria uma única chamada.
  6. Sessões de mensagens: Facilitam a coordenação em larga escala de fluxos de trabalho e a transferência ordenada de mensagens.

Principais características e funcionalidades

  1. Filas e tópicos: O Azure Service Bus oferece filas e tópicos como canais de comunicação. As filas permitem a comunicação ponto a ponto, garantindo que cada mensagem seja processada por apenas um destinatário, o que as torna ideais para cenários de distribuição de carga de trabalho e nivelamento de carga. Por outro lado, os tópicos suportam padrões de mensagens de publicação/assinatura, permitindo que vários assinantes recebam mensagens relevantes de forma independente e facilitando arquiteturas escaláveis ​​orientadas a eventos.

  2. Entrega de mensagens confiável: Com o Azure Service Bus, a entrega de mensagens é inerentemente confiável. Isso garante a persistência das mensagens, permite configurar o tratamento de mensagens e erros, a tolerância a falhas e a semântica de entrega "pelo menos uma vez", minimizando o risco de perda ou duplicação de dados. Além disso, oferece suporte a transações, permitindo operações atômicas em várias mensagens e, assim, garantindo a integridade dos dados.

  3. Políticas de Encaminhamento de Mensagens Não Entregues e de Repetição: Para lidar com mensagens errôneas de forma eficaz, o Azure Service Bus oferece recursos de encaminhamento de mensagens não entregues, permitindo que mensagens problemáticas sejam movidas automaticamente para uma fila separada para análise e solução de problemas. Além disso, oferece políticas de repetição flexíveis, permitindo que os desenvolvedores configurem novas tentativas automáticas com estratégias de recuo exponencial, aumentando a resiliência dos aplicativos diante de falhas transitórias.

  4. Particionamento e dimensionamento: o Azure Service Bus suporta o particionamento de entidades de mensagens para distribuir a carga de trabalho entre vários nós, garantindo escalabilidade horizontal e alta taxa de transferência. Essa capacidade é crucial para lidar com grandes volumes de mensagens e acomodar cargas de trabalho flutuantes sem comprometer o desempenho ou a confiabilidade.

  5. Integração com o ecossistema do Azure: O Azure Service Bus integra-se perfeitamente com outros serviços do Azure, como o Azure Functions, o Logic Apps, o Event Grid e o Azure Kubernetes Service (AKS), permitindo que os desenvolvedores criem soluções completas com facilidade. Seja para acionar funções sem servidor em resposta a mensagens recebidas ou para orquestrar fluxos de trabalho complexos usando o Logic Apps, o Azure Service Bus serve como elemento fundamental para a criação de arquiteturas robustas e orientadas a eventos.

Introdução ao IronPDF

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 1

IronPDF é uma poderosa biblioteca C# para PDF que permite gerar, editar e extrair conteúdo de documentos PDF em projetos .NET . Aqui estão algumas características principais:

  1. Conversão de HTML para PDF:

    • Converter conteúdo HTML, CSS e JavaScript para o formato PDF.

    • Utilize o mecanismo de renderização do Chrome para PDFs com qualidade de imagem perfeita.

    • Gere PDFs a partir de URLs, arquivos HTML ou strings HTML.
  2. Conversão de imagem e conteúdo:

    • Converter imagens de e para PDF.

    • Extrair texto e imagens de PDFs existentes.

    • Suporte para diversos formatos de imagem.
  3. Edição e Manipulação:

    • Defina propriedades, segurança e permissões para PDFs.

    • Adicionar assinaturas digitais.

    • Editar metadados e histórico de revisões.
  4. Suporte multiplataforma:

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

    • Compatível com Windows, Linux e macOS.

    • Disponível no NuGet para fácil instalação.

Gere um documento PDF usando IronPDF e Azure.Messaging.ServiceBus

Para começar, crie um aplicativo de console usando o Visual Studio, conforme mostrado abaixo.

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 2

Forneça o nome do projeto

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 3

Forneça a versão do .NET.

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 4

Instale o pacote IronPDF .

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 5

Criando um Barramento de Serviço do Azure

Crie um namespace com um nome exclusivo em todo o Azure. Um namespace é um contêiner para recursos do Service Bus, como filas e tópicos, dentro da sua aplicação.

Eis como criar um namespace:

  1. Faça login no portal do Azure.
  2. Acesse a página "Todos os serviços".
  3. No painel de navegação à esquerda, selecione "Integração" na lista de categorias.
  4. Posicione o cursor sobre "Barramento de Serviço" e clique no botão "+" no bloco do Barramento de Serviço.

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 6

Para configurar a guia "Noções básicas" na página "Criar namespace", siga estas etapas:

  1. Assinatura: Selecione a assinatura do Azure na qual você deseja criar o namespace.
  2. Grupo de recursos: Escolha um grupo de recursos existente onde o namespace será localizado ou crie um novo.

  3. Nome do namespace: Insira um nome para o namespace. Certifique-se de que o nome atenda aos seguintes critérios:

    • Deve ser exclusivo em todo o Azure.

    • O comprimento deve estar entre 6 e 50 caracteres.

    • Só pode conter letras, números e hífens "-".

    • Deve começar com uma letra e terminar com uma letra ou número.

    • Não pode terminar com "-sb" ou "-mgmt".
  4. Localização: Selecione a região onde seu namespace deve ser hospedado.
  5. Plano de preços: Escolha o plano de preços (Básico, Padrão ou Premium) para o namespace. Para este exemplo, selecione Padrão.

  6. Selecione "Revisar + Criar" na parte inferior da página.

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 7

  1. Selecione Criar na página Revisar + Criar .

  2. Assim que a implantação do recurso for bem-sucedida, acesse o recurso .

Você está vendo a página inicial do seu namespace do Service Bus.

Criar filas do Service Bus no portal do Azure

Para configurar uma fila no seu namespace do Barramento de Serviço, siga estes passos:

  1. Navegue até Filas: Acesse a página do Namespace do Barramento de Serviço no portal do Azure. Selecione "Filas" no menu de navegação à esquerda.
  2. Criar uma nova fila: Na página Filas, clique no botão "+ Fila" na barra de ferramentas.
  3. Configurar fila: Insira um nome para sua fila no campo fornecido. Deixe as outras configurações com seus valores padrão. As opções que você precisa configurar ao criar uma fila do Azure Service Bus:

    1. Nome: Este é o identificador único da sua fila. Escolha um nome que seja descritivo e fácil de lembrar.

    2. Tamanho máximo da fila: Define a capacidade máxima de armazenamento da fila. Você pode configurar para 1 GB, 2 GB, 5 GB, 10 GB, 20 GB, 40 GB, 80 GB ou 100 GB. No seu caso, está definido para 1 GB .

    3. Número máximo de entregas: Especifica o número máximo de vezes que uma mensagem pode ser entregue antes de ser enviada para a fila de mensagens não entregues ou descartada. Isso ajuda a lidar com falhas no processamento de mensagens.

    4. Tempo de Vida da Mensagem (TTL): Determina por quanto tempo uma mensagem permanece na fila antes de expirar. Você pode configurar isso em dias, horas, minutos e segundos. Assim que o TTL for atingido, as mensagens não entregues são descartadas ou movidas para a fila de mensagens não entregues, caso o recurso de mensagens não entregues esteja habilitado.

    5. Duração do bloqueio: Este é o período de tempo durante o qual uma mensagem fica bloqueada para processamento pelo destinatário. Durante esse período, outros receptores não podem processar a mesma mensagem. Você pode definir essa duração em dias, horas, minutos e segundos.

    6. Habilitar a Fila de Mensagens Não Entregues após Expiração: Quando habilitada, as mensagens que expiram (ou seja, excedem seu TTL) são movidas para a fila de mensagens não entregues em vez de serem descartadas. Isso permite uma inspeção e tratamento mais detalhados das mensagens expiradas.

    7. Habilitar Particionamento: Esta opção permite o particionamento da fila em vários agentes de mensagens, o que pode melhorar a escalabilidade e a taxa de transferência. O particionamento é útil para lidar com grandes volumes de mensagens.

Essas configurações ajudam você a controlar o comportamento e o desempenho da sua fila do Azure Service Bus, garantindo que ela atenda aos requisitos do seu aplicativo.

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 8

  1. Conclusão da Criação: Clique no botão "Criar" para finalizar a criação da fila. Esses passos garantem que você crie com sucesso uma fila dentro do seu namespace do Barramento de Serviço usando o portal do Azure.

Instale a biblioteca Azure.Messaging.ServiceBus, um cliente do Service Bus, para se conectar à fila do Azure usando uma cadeia de conexão.

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 9

Adicione o código abaixo para enviar e receber mensagens usando o 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)); // Send message to the queue
            Console.WriteLine($"Sent Below message at: {DateTime.Now}");
            content += $"<p>Sent Below message at: {DateTime.Now}</p>";

            Console.ReadLine(); // 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.MessageId}</p>";
            Console.WriteLine($"MessageID={msg.MessageId}");

            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)); // Send message to the queue
            Console.WriteLine($"Sent Below message at: {DateTime.Now}");
            content += $"<p>Sent Below message at: {DateTime.Now}</p>";

            Console.ReadLine(); // 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.MessageId}</p>";
            Console.WriteLine($"MessageID={msg.MessageId}");

            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");
        }
    }
}
Imports Azure.Messaging.ServiceBus
Namespace CodeSample
	Public Module AzureServiceBusDemo
		Public Async Function Execute() As Task
			Dim connectionString As String = "Endpoint=sb://iron-articles.servicebus.windows.net/;SharedAccessKeyName=all;SharedAccessKey=uqQIzpuc2HxbnAb9keqTINvzfTcFbkkU0+ASbJZ/tow=;EntityPath=ironpdf"
			Dim queName As String = "ironpdf"
			Console.WriteLine("Demo IronPDF with Azure.Messaging.ServiceBus")
			Installation.EnableWebSecurity = True

			' Instantiate Renderer
			Dim renderer = New ChromePdfRenderer()
			Dim content = "<h1>Demo IronPDF with Azure.Messaging.ServiceBus</h1>"
			content &= "<h2>Send Message to Azure.Messaging.ServiceBus Queue: ironpdf</h2>"

			Await var client = New ServiceBusClient(connectionString)
			Dim msgText = "IronPDF is Awesome Package"
			content &= $"<p>Message: {msgText}</p>"

			Dim tx = client.CreateSender(queName)
			Await tx.SendMessageAsync(New ServiceBusMessage(msgText)) ' Send message to the queue
			Console.WriteLine($"Sent Below message at: {DateTime.Now}")
			content &= $"<p>Sent Below message at: {DateTime.Now}</p>"

			Console.ReadLine() ' wait for user input to read the message;

			Dim rx = client.CreateReceiver(queName)
			Dim 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.MessageId}</p>"
			Console.WriteLine($"MessageID={msg.MessageId}")

			content &= $"<p>Message Received: {msg.Body}</p>"
			Console.WriteLine($"Message Received: {msg.Body}")

			Dim pdf = renderer.RenderHtmlAsPdf(content)
			' Export to a file or Stream
			pdf.SaveAs("AwesomeAzureServiceBusQueueAndIronPdf.pdf")
		End Function
	End Module
End Namespace
$vbLabelText   $csharpLabel

Explicação do código

  1. Cadeia de conexão e nome da fila:

    • A variável connectionString contém os detalhes de conexão para o seu namespace do Azure Service Bus. Especifica o ponto de extremidade, a chave de acesso compartilhada e o caminho da entidade (nome da fila).

    • A variável queName contém o nome da fila do Barramento de Serviço com a qual você deseja trabalhar.
  2. Configuração da demonstração:

    • O código começa imprimindo a mensagem: "Demonstração do IronPDF com Azure.Messaging.ServiceBus."

    • Permite a segurança web usando Installation.EnableWebSecurity = true;.
  3. Criando um cliente de barramento de serviço:

    • O ServiceBusClient foi criado usando a string de conexão fornecida.

    • Este cliente permite interagir com entidades do Service Bus (filas, tópicos, etc.).
  4. Enviar uma mensagem:

    • Uma mensagem com o conteúdo "IronPDF is Awesome Package" é enviada para a fila especificada usando o método CreateSender.

    • A mensagem foi criada usando new ServiceBusMessage(msgText).

    • O registro de data e hora do envio da mensagem é impresso no console.
  5. Recebendo uma mensagem:

    • Um receptor é criado para a mesma fila usando CreateReceiver.

    • O código aguarda a entrada do usuário (usando Console.ReadLine()) para simular o processamento de mensagens.

    • Quando uma mensagem é recebida, seu ID e corpo são impressos no console.
  6. Gerando um PDF:

    • O renderizador cria um PDF a partir do conteúdo HTML (incluindo as mensagens enviadas e recebidas).

    • O PDF resultante é salvo como "AwesomeAzureServiceBusQueueAndIronPdf.pdf".

Saída

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 10

PDF

Exemplo de Azure.Messaging.ServiceBus em C# (Como funciona): Figura 11

Licenciamento IronPDF

O pacote IronPDF requer uma licença para ser executado e gerar o PDF. Adicione o código abaixo no início da aplicação, antes que o pacote seja acessado.

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

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY"
$vbLabelText   $csharpLabel

Uma licença de avaliação está disponível na página de licença de avaliação do IronPDF .

Conclusão

Em uma era caracterizada pela transformação digital e pelos rápidos avanços tecnológicos, o Azure Service Bus surge como um componente fundamental na jornada de modernização de empresas em todo o mundo. Ao fornecer recursos de mensagens confiáveis, escaláveis ​​e flexíveis, ele capacita os desenvolvedores a arquitetar soluções resilientes e ágeis que podem se adaptar às necessidades de negócios em constante evolução.

Seja facilitando a integração perfeita, permitindo arquiteturas orientadas a eventos ou garantindo a comunicação assíncrona, o Azure Service Bus desempenha um papel transformador na promoção da inovação e na aceleração de iniciativas digitais em diversos setores.

À medida que as organizações continuam a adotar paradigmas nativos da nuvem e arquiteturas distribuídas, o Azure Service Bus se destaca como uma prova do compromisso da Microsoft em capacitar desenvolvedores e empresas em sua jornada para a nuvem. O IronPDF simplifica a geração de PDFs em aplicações .NET , oferecendo flexibilidade e funcionalidade para a criação de documentos de nível profissional diretamente a partir do código.

Perguntas frequentes

Como posso converter HTML para PDF em C#?

Você pode usar o método RenderHtmlAsPdf do IronPDF para converter strings HTML em PDFs. Além disso, você pode usar o método RenderHtmlFileAsPdf para converter arquivos HTML em PDFs.

O que é o Azure Service Bus e como ele aprimora a comunicação?

O Azure Service Bus é um agente de mensagens de integração empresarial totalmente gerenciado que aprimora a comunicação, facilitando a transferência confiável de mensagens entre aplicativos e serviços, sejam eles baseados em nuvem, locais ou em ambientes híbridos.

Quais são as principais características da biblioteca de PDF utilizada no artigo?

A biblioteca IronPDF oferece recursos como conversão de HTML para PDF, edição e manipulação de PDFs, conversão de imagens e compatibilidade multiplataforma com várias estruturas .NET e sistemas operacionais.

Como enviar mensagens usando o Azure.Messaging.ServiceBus em C#?

Para enviar mensagens usando o Azure.Messaging.ServiceBus, você cria um ServiceBusSender e usa o método SendMessageAsync para enviar mensagens para a fila.

Como funciona o envio de cartas não entregues (dead lettering) no Azure Service Bus?

O recurso de mensagens não processadas (dead lettering) no Azure Service Bus move automaticamente as mensagens que não podem ser processadas para uma fila separada, permitindo que os desenvolvedores analisem e solucionem problemas relacionados a essas mensagens de forma eficaz.

O Azure Service Bus suporta arquiteturas orientadas a eventos?

Sim, o Azure Service Bus integra-se perfeitamente com outros serviços do Azure, como o Azure Functions e o Logic Apps, oferecendo suporte a arquiteturas orientadas a eventos e facilitando soluções de mensagens escaláveis e flexíveis.

Qual é o processo para receber mensagens usando o Azure.Messaging.ServiceBus?

Para receber mensagens usando o Azure.Messaging.ServiceBus, você cria um ServiceBusReceiver e usa o método ReceiveMessageAsync para processar as mensagens recebidas da fila.

Preciso de uma licença para usar a biblioteca de PDF mencionada no artigo?

Sim, o IronPDF requer uma licença para gerar PDFs. Você pode obter uma chave de licença para o seu aplicativo ou usar uma licença de avaliação disponível na página de licenças de avaliação do IronPDF.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim