.NET 帮助

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

发布 2024年八月13日
分享:

在当今互联互通的数字时代,高效的沟通是企业成功的基石。 无论是在应用程序之间传输关键数据,还是确保分布式系统的实时更新,可靠的消息传输基础架构都是不可或缺的。

Azure 服务总线作为一种强大的解决方案,基于云的消息传递服务--.NET, .NET, .NET, .NET, Java, Python 或 Node.js 开发人员能够构建可扩展、解耦和弹性的应用程序。 让我们深入 Azure 服务总线的领域,了解其意义并探索其无数的功能。 稍后在本文中,我们还将探讨IronPDF管理、生成和读取 PDF 文档。

了解 Azure 服务总线

Azure 服务总线是一种全面管理的企业集成消息代理,可促进应用程序和服务之间的可靠通信,无论它们是在云计算、内部部署还是混合环境中运行。

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

Azure 服务总线具有以下优点:

  1. 解耦应用程序:服务总线允许您将应用程序和服务相互分离。 这种解耦增强了可靠性和可扩展性。

  2. 负载平衡:负载平衡**:该工具可在相互竞争的工作者之间平衡工作,确保有效利用资源。

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

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

  5. 事务:服务总线支持原子事务,允许在单个事务范围内进行多个操作。 事务有多个并发调用,而消息批处理只有一个调用。

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

主要特点和功能

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

  2. 可靠的消息传递: 使用 Azure 服务总线,消息传递本质上是可靠的。 它可以确保消息的持久性,可以配置消息和错误处理程序、容错和至少一次交付语义,最大限度地降低数据丢失或重复的风险。 此外,它还支持事务,可在多条消息中进行原子操作,从而确保数据完整性。

  3. 死字处理和重试策略: 为有效处理错误消息,Azure 服务总线提供了死字处理功能,允许将有问题的消息自动转移到单独的队列中,以便进行分析和故障排除。 此外,它还提供了灵活的重试策略,使开发人员能够配置自动重试和指数后退策略,从而提高应用程序在面对瞬时故障时的恢复能力。

  4. 分区和扩展: Azure 服务总线支持对消息传递实体进行分区,以便在多个节点上分配工作负载,从而确保横向可扩展性和高吞吐量。 这种能力对于处理大量信息和适应不断变化的工作量而不影响性能或可靠性至关重要。

  5. 与 Azure 生态系统集成: Azure 服务总线与其他 Azure 服务无缝集成,如 Azure Functions、Logic Apps、Event Grid 和 Azure Kubernetes 服务。(AKS)翻译的目的是使开发人员能够轻松地构建端到端解决方案。 无论是根据收到的消息触发无服务器功能,还是使用 Logic Apps 协调复杂的工作流,Azure 服务总线都是构建强大的事件驱动架构的关键。

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 转换成图像。

    • 从现有 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

    要配置 "创建名称空间 "页面上的 "基础知识 "选项卡,请按照以下步骤操作:

  5. 订阅:选择要在其中创建命名空间的 Azure 订阅。

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

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

    • 在 Azure 中必须是唯一的。

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

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

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

    • 不能以"-sb "或"-mgmt "结尾。
  8. 位置:选择您的命名空间所在的地区。

  9. 定价层:选择定价层级(基本版、标准版、或高级版)为命名空间。 在此示例中,请选择 "标准"。

  10. 选择页面底部的审核 + 创建

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

  11. 审核+创建页面上选择创建。

  12. 资源部署成功后,转到资源

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

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

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

  1. 导航至队列:转到 Azure 门户中的服务总线命名空间页面。 从左侧导航菜单中选择 "队列"。

  2. 创建新队列:在队列页面,单击工具栏上的 "+ 队列 "按钮。

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

    1. 名称:这是您队列的唯一标识符。 选择一个具有描述性且易于记忆的名称。

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

    3. 最大交付次数:这指定了一条邮件在被发送到死信队列或被丢弃之前的最大发送次数。 这有助于处理消息处理故障。

    4. 信息发布时间(TTL):这决定了信息在队列中停留多长时间才会过期。 您可以以天、小时、分钟和秒为单位进行设置。 一旦达到 TTL,死信信息就会被丢弃,或者在启用死信标记的情况下被移至死信队列。

    5. 锁定时间:这是接收方锁定处理信息的时间。 在此期间,其他接收者无法处理相同的信息。 您可以以天、小时、分钟和秒为单位设置持续时间。

    6. 在信息过期时启用死字:启用后,过期邮件(即,超出其TTL)在翻译过程中,译文中的"...... "和"...... "将被移至死字队列,而不是被丢弃。 这样可以进一步检查和处理过期信息。

    7. 启用分区:该选项可在多个消息代理之间对队列进行分区,从而提高可扩展性和吞吐量。 分区对于处理大量信息非常有用。

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

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

  4. 完成创建:点击 "创建 "按钮,完成队列的创建。 这些步骤可确保您使用 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 服务总线命名空间的连接详细信息。 它指定了端点、共享访问密钥和实体路径(队列名称).

    • queName "变量包含您要使用的服务总线队列的名称。
  2. 演示设置

    • 代码开始时会打印一条信息:"使用 Azure.Messaging.ServiceBus 演示 IronPdf"。

    • 它使用 Installation.EnableWebSecurity=true;启用网络安全。
  3. 创建服务总线客户端

    • 服务总线客户端 "是使用提供的连接字符串创建的。

    • 该客户端允许您与服务总线实体交互(队列,主题等。).
  4. 发送信息

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

    • 使用 new ServiceBusMessage创建消息(msgText)`.

    • 发送信息的时间戳会打印到控制台。
  5. 接收信息

    • 使用 CreateReceiver 为同一队列创建接收器。

    • 代码等待用户输入(使用 Console.Read())模拟消息处理。

    • 收到消息时,其 ID 和正文将被打印到控制台。
  6. 生成 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#

试用许可证可在IronPDF 试用许可页面.

结论

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

无论是促进无缝集成、启用事件驱动架构,还是确保异步通信,Azure 服务总线都在推动创新和加速各行业数字计划方面发挥着变革性作用。

随着企业不断采用云原生范例和分布式架构,Azure 服务总线证明了微软在云计算之路上为开发人员和企业赋能的承诺。 IronPDF简化在 .NET 应用程序中生成 PDF,提供灵活性和功能性,可以直接通过代码创建专业级别的文档。

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

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

免费NuGet下载 总下载量: 11,781,565 查看许可证 >