.NET 帮助

Azure.Messaging.ServiceBus 示例 C#(工作原理)

发布 2024年八月13日
分享:

在当今互联的数字环境中,高效的沟通是成功企业的基石。无论是传递应用程序之间的重要数据,还是确保分布式系统中的实时更新,可靠的消息传递基础设施都是不可或缺的。

Azure 服务总线, 一个基于云的消息服务,成为一个强大的解决方案,赋予开发人员构建可扩展、解耦和具有弹性的应用程序的能力。让我们深入了解 Azure Service Bus 的领域,以理解其重要性并探索其多种功能。在本文后面,我们还将进一步探讨 IronPDF 管理、生成和读取 PDF 文档。

了解 Azure Service Bus

Azure Service Bus 是完全托管的企业集成消息代理,促进了应用程序和服务之间可靠的通信,无论它们是在云中、本地还是混合环境中运行。

它提供灵活的消息传递功能,包括排队和发布/订阅机制,以实现分布式系统中不同组件之间的无缝通信。此外,它允许批量消息,这允许在不超过总大小限制的情况下发送多条消息。

Azure Service Bus 提供以下优点:

  1. 解耦应用程序: Service Bus 允许您将应用程序和服务彼此分离。这种解耦增强了可靠性和可扩展性。

  2. 负载平衡: 它在竞争的工作者之间平衡工作,确保资源利用效率。

  3. 消息传输: 数据通过消息在应用程序和服务之间传输。这些消息的消息体可以包含各种类型的数据,如 JSON、XML 或纯文本。

  4. 消息传递场景: 常见的场景包括传输业务数据 (例如,销售订单), 负载均衡,并通过主题和订阅启用发布者和订阅者之间的关系。

  5. 事务:Service Bus 支持原子事务,允许在单个事务范围内进行多重操作。事务会包含多个并发调用,而消息批处理则是单次调用。

  6. 消息会话:它有助于大规模协调工作流和有序地传输消息。

关键功能和能力

  1. 队列和主题: Azure Service Bus 提供队列和主题作为通信通道。队列支持点对点通信,确保每条消息只由一个接收者处理,非常适合工作负载分配和负载均衡的场景。另一方面,主题支持发布/订阅消息模式,允许多个订阅者独立接收相关消息,有助于实现可扩展的事件驱动架构。

  2. 可靠的消息传递: 使用 Azure Service Bus,消息传递固有地可靠。它确保消息持久性,可以配置消息和错误处理程序、容错性以及至少一次传递语义,最大限度地减少数据丢失或重复的风险。此外,它支持事务,允许跨多个消息的原子操作,从而确保数据完整性。

  3. 死信处理和重试策略: 为了有效处理错误消息,Azure Service Bus 提供死信处理功能,允许自动将有问题的消息移动到单独的队列进行分析和故障排除。此外,它还提供灵活的重试策略,使开发人员能够配置具有指数退避策略的自动重试,增强应用程序在瞬态故障面前的弹性。

  4. 分区和扩展: Azure Service Bus 支持消息实体的分区,以便将工作负载分布到多个节点,确保水平扩展和高吞吐量。这一能力对于处理大量消息和适应波动的工作负载而不影响性能或可靠性至关重要。

  5. 与 Azure 生态系统的集成: Azure Service Bus 无缝集成其他 Azure 服务,例如 Azure Functions、Logic Apps、Event Grid 和 Azure Kubernetes Service。 (AKS),帮助开发人员轻松构建端到端解决方案。无论是响应传入消息触发无服务器功能,还是使用 Logic Apps 编排复杂工作流,Azure Service Bus 都是构建强大事件驱动架构的关键所在。

IronPDF 简介

Azure.Messaging.ServiceBus 示例 C#(工作原理):图 1

IronPDF 是一个强大的C# PDF库,允许您在.NET项目中生成、编辑和提取PDF文档的内容。以下是一些关键功能:

  1. HTML到PDF转换

    • 将HTML、CSS和JavaScript内容转换为PDF格式。

    • 使用Chrome渲染引擎生成像素完美的PDF。

    • 从URL、HTML文件或HTML字符串生成PDF。
  2. 图像和内容转换

    • 图像与PDF之间的相互转换。

    • 从现有的PDF中提取文本和图像。

    • 支持多种图像格式。
  3. 编辑和操作

    • 设置PDF的属性、安全性和权限。

    • 添加数字签名。

    • 编辑元数据和修订历史。
  4. 跨平台支持

    • 适用于.NET Core (8、7、6、5 和 3.1+), .NET 标准 (2.0+)和 .NET Framework (4.6.2+).

      • 兼容 Windows、Linux 和 macOS。
    • 可在 NuGet 上轻松安装。

使用 IronPDF 和 Azure.Messaging.ServiceBus 生成 PDF 文档

首先,按照以下步骤使用 Visual Studio 创建一个控制台应用程序

Azure.Messaging.ServiceBus 示例 C# (工作原理): 图2

提供项目名称

Azure.Messaging.ServiceBus C# 示例(工作原理):图 3

提供 .NET 版本

Azure.Messaging.ServiceBus 示例 C#(工作原理):图 4

安装 IronPDF 包裹

Azure.Messaging.ServiceBus 示例 C#(工作原理):图5

创建 Azure 服务总线

创建一个在 Azure 中独一无二的命名空间。命名空间是应用程序内包含队列和主题等服务总线资源的容器。

以下是创建命名空间的方法:

  1. 登录 Azure 门户。
  2. 转到“所有服务”页面。
  3. 在左侧导航窗格中,从类别列表中选择“集成”。
  4. 将鼠标悬停在“服务总线”上,然后点击服务总线图块上的“+”按钮。

Azure.Messaging.ServiceBus 示例 C#(工作原理):图 6

要在“创建命名空间”页面上配置基础标签,请按照以下步骤操作:

  1. 订阅:选择要创建命名空间的 Azure 订阅。

  2. 资源组:选择命名空间所在的现有资源组,或创建一个新的资源组。

  3. 命名空间名称:输入命名空间的名称。确保名称符合以下标准:

    • 必须在整个 Azure 中唯一。

    • 长度必须在 6 到 50 个字符之间。

    • 只能包含字母、数字和连字符“-”。

    • 必须以字母开头,并以字母或数字结尾。

    • 不能以“-sb”或“-mgmt”结尾。
  4. 位置:选择托管命名空间的区域。

  5. 定价层:选择定价层。 (基本版、标准版、或高级版) 为命名空间。对于这个示例,选择标准。

  6. 在页面底部选择 Review + Create

Azure.Messaging.ServiceBus 示例 C#(工作原理): 图 7

  1. Review + Create 页面上选择创建。

  2. 一旦资源部署成功,转到资源

您会看到服务总线命名空间的主页。

在Azure门户中创建服务总线队列

要在您的服务总线命名空间中设置队列,请按照以下步骤操作:

  1. 导航到队列:在Azure门户中转到服务总线命名空间页面。从左侧导航菜单中选择“Queues”(队列)。

  2. 创建新队列:在队列页面,点击工具栏上的“+ Queue”(+队列)按钮。

  3. 配置队列:在提供的字段中输入您的队列名称。其他设置保持默认值。不需要配置Azure服务总线队列的选项:

  4. 名称:这是您的队列的唯一标识符。请选择一个描述性且易于记住的名称。

  5. 最大队列大小:这定义了队列的最大存储容量。您可以将其设置为1 GB, 2 GB, 5 GB, 10 GB, 20 GB, 40 GB, 80 GB或100 GB。在您的案例中设置为1 GB

  6. 最大投递次数:这指定了消息在发送到死信队列或被丢弃之前的最大投递次数。这有助于处理消息处理失败。

  7. 消息生存时间 (TTL)**: 这决定了消息在队列中保留多久才会过期。您可以以天、小时、分钟和秒为单位进行设置。一旦达到TTL,死信消息将被丢弃或移动到死信队列(如果启用了死信处理)。

  8. 锁定持续时间: 这是消息被接收者锁定处理的时间。在此期间,其他接收者不能处理相同的消息。您可以以天、小时、分钟和秒为单位设定这个持续时间。

  9. 启用消息过期的死信处理: 启用时,过期的消息将 (即,超出其TTL) 被移动到死信队列,而不是被丢弃。这允许对过期消息进行进一步的检查和处理。

  10. 启用分区:此选项启用队列在多个消息代理之间的分区,可以提高可扩展性和吞吐量。分区对于处理大量消息非常有用。

这些设置可以帮助您控制Azure Service Bus队列的行为和性能,确保其满足您的应用程序要求。

Azure.Messaging.ServiceBus 示例 C#(工作原理):图8

  1. 完成创建:点击“创建”按钮以完成队列的创建。这些步骤确保您使用 Azure 门户成功在您的服务总线命名空间中创建一个队列。

安装 Azure.Messaging.ServiceBus,这是一个服务总线客户端库,用于使用连接字符串连接到 Azure 队列。

Azure.Messaging.ServiceBus 示例 C#(工作原理):图9

将以下代码添加到使用 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");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码解释

  1. 连接字符串和队列名称

    • connectionString 变量包含 Azure 服务总线命名空间的连接详细信息。它指定了端点、共享访问密钥和实体路径 (队列名称).
  2. 变量设置:

    • queName 变量保存了您要使用的 Service Bus 队列的名称。
  3. 演示设置:

    • 代码开始时会打印一条消息:“Demo IronPDF with Azure.Messaging.ServiceBus.”

    • 它通过设置 Installation.EnableWebSecurity = true; 来启用网页安全。
  4. 创建 Service Bus 客户端:

    • 使用提供的连接字符串创建 ServiceBusClient

    • 该客户端允许您与 Service Bus 实体进行交互。 (队列,主题等。).
  5. 发送消息

    • 使用 CreateSender 方法将内容为 "IronPDF is Awesome Package" 的消息发送到指定队列。

    • 使用 new ServiceBusMessage 创建消息(msgText)将以下内容翻译成中文:

 

  • 发送消息的时间戳打印到控制台。
  1. 接收消息

    • 使用 CreateReceiver 为同一队列创建接收器。
    • 代码等待用户输入 (使用 Console.Read()) 模拟信息处理。

    • 当收到一条信息时,其 ID 和正文将打印到控制台。
    1. 生成 PDF
      • 渲染器从 HTML 内容生成 PDF (包括发送和接收的消息).
      • 生成的 PDF 保存为 “AwesomeAzureServiceBusQueueAndIronPdf.pdf”。

输出

Azure.Messaging.ServiceBus 示例 C#(如何工作):图 10

PDF

Azure.Messaging.ServiceBus 示例 C#(工作原理):图 11

IronPDF 许可证

IronPDF 包需要许可证才能运行和生成 PDF。在访问包之前,请在应用程序的开头添加以下代码。

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

试用许可证可用 这里.

结论

在以数字化转型和快速技术进步为特征的时代,Azure Service Bus 作为全球企业现代化旅程中的关键组成部分脱颖而出。通过提供可靠、可扩展和灵活的消息传递功能,它使开发人员能够构建出能够适应不断变化的业务需求的弹性和敏捷的解决方案。

无论是促进无缝集成、启用事件驱动架构,还是确保异步通信,Azure Service Bus 在推动创新和加速各行业数字化举措方面都发挥了变革性作用。

随着组织继续采用云原生范式和分布式架构,Azure Service Bus 成为微软致力于在向云端迁移的过程中为开发人员和企业提供支持的有力证明。 IronPDF 简化在 .NET 应用程序中生成 PDF,提供灵活性和功能性,可以直接通过代码创建专业级别的文档。

< 前一页
WebGrease .NET Core(开发人员如何使用)
下一步 >
Simple Injector C#(它是如何为开发者工作的)

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >