Passer au contenu du pied de page
.NET AIDE

NServiceBus C# (Comment ça fonctionne pour les développeurs)

NServiceBus est un bus de services puissant et adaptable conçu pour le .NET Framework qui simplifie le développement de systèmes distribués. Les solides modèles de messagerie qu'il propose garantissent une gestion et une livraison fiables des messages à travers plusieurs microservices et applications. NServiceBus abstrait l'architecture de messagerie sous-jacente, permettant aux développeurs de se concentrer sur la logique métier au lieu des complexités de la construction de systèmes distribués.

En revanche, IronPDF est une bibliothèque .NET bien connue pour générer, visualiser et modifier des fichiers PDF. Il est réputé pour sa facilité d'utilisation et son efficacité à créer des PDF à partir de diverses sources, telles que des fichiers ASPX et HTML.

Les développeurs peuvent créer des systèmes logiciels fiables, évolutifs et maintenables capables de générer et de gérer des documents PDF dans le cadre de leurs opérations commerciales en combinant NServiceBus et IronPDF.

Nous examinerons comment configurer un projet C# NServiceBus simple et l'intégrer avec IronPDF dans cet article, afin que vous puissiez créer un flux de travail rationalisé pour la gestion et la production de documents PDF dans une architecture d'application distribuée. Après avoir lu ce tutoriel d'introduction, vous devriez comprendre exactement comment ces deux technologies efficaces peuvent collaborer pour simplifier vos tâches liées aux PDF dans un environnement distribué.

Qu'est-ce que NServiceBus en C# ?

NServiceBus est un framework puissant et adaptable qui facilite la création de systèmes distribués et d'architectures .NET orientées services. En utilisant NServiceBus, vous pouvez gérer facilement différents types de messages et garantir une communication fiable. Cela est crucial, notamment dans une application web et des architectures similaires où le routage et le traitement homogène des messages sont essentiels. Les gestionnaires de messages de NServiceBus traitent efficacement la réception des messages, garantissant que chaque composant logique interagit harmonieusement. NServiceBus a les caractéristiques importantes suivantes :

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 1 - NServiceBus C#

Caractéristiques de NServiceBus

Communication basée sur les messages

NServiceBus encourage la communication basée sur les messages entre différents services ou composants d'un système. En découplant les composants, cette méthode crée des conceptions plus faciles à développer et à gérer.

Messagerie fiable

En gérant automatiquement les tentatives de réémission, les files d'attente de lettres mortes et d'autres techniques de tolérance aux pannes, il garantit une livraison fiable des messages. Dans les systèmes distribués, où les pannes de réseau et autres problèmes de défaillance sont fréquents, cette fiabilité est essentielle.

Modèle de publication/souscription

Le modèle de publication/souscription est pris en charge par NServiceBus, permettant aux services de publier des événements et de laisser d'autres services s'abonner à ces événements. Cela rend possible les architectures pilotées par les événements, où les modifications apportées aux événements dans un composant du système peuvent déclencher des réponses dans d'autres composants.

Gestion des sagas

Les longs processus métier peuvent être gérés avec NServiceBus grâce à son support intégré pour les sagas. Les sagas permettent à la plateforme de services de gérer l'état et de coordonner des opérations complexes entre plusieurs services.

Extensibilité et personnalisation

Il offre un niveau exceptionnel d'extensibilité, permettant aux développeurs de personnaliser le processus de gestion, de traitement et de transport des messages. Grâce à son adaptabilité, il peut être utilisé dans une variété de scénarios.

Intégration avec diverses plateformes de messagerie

De nombreux systèmes de messagerie, y compris MSMQ, RabbitMQ, Azure Service Bus, Amazon SQS, et autres, peuvent être intégrés avec NServiceBus. Cela permet aux développeurs de choisir la solution d'infrastructure de communication qui répond le mieux à leurs besoins.

Créer et configurer NServiceBus en C

Vous devez d'abord configurer votre environnement de développement, créer un projet de base, et construire un service de messagerie et un scénario de base avant de pouvoir commencer à utiliser NServiceBus dans un projet C#. Voici un guide étape par étape pour vous lancer.

Créer un Nouveau Projet Visual Studio

Dans Visual Studio, le processus de création d'un projet console est simple. Utilisez ces étapes simples dans l'environnement Visual Studio pour lancer une application console :

Assurez-vous d'avoir installé Visual Studio sur votre PC avant de l'utiliser.

Démarrer un Nouveau Projet

Cliquez sur Fichier, puis sélectionnez Nouveau, et enfin Projet.

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 2 - Cliquez sur Nouveau

Vous pouvez sélectionner le modèle "App Console" ou "App Console (.NET Core)" dans la liste des références de modèles de projet ci-dessous.

Fournissez un nom pour votre projet dans le champ « Nom ».

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 3 - Fournissez un nom et un emplacement pour le projet

Choisissez un emplacement de stockage pour le projet.

Cliquer sur "Créer" va démarrer le projet d'application console.

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 4 - Cliquez sur créer

Installer les paquets NServiceBus

Naviguez vers Outils > Gestionnaire de Paquets NuGet > Console du Gestionnaire de Paquets pour ouvrir la Console du Gestionnaire de Paquets NuGet.

Exécutez la commande suivante pour installer le package NuGet NServiceBus.

Install-Package NServiceBus

Choisir un Transport

NServiceBus a besoin d'un transport pour recevoir et envoyer des messages. Nous resterons avec le Transport d'Apprentissage car il est facile à utiliser et fonctionne bien pour les tests et le développement.

Installez le package pour le Transport d'Apprentissage en l'exécutant.

Install-Package NServiceBus.RabbitMQ

Configurer NServiceBus

Configurer le Point de terminaison

Configurez la configuration du point de terminaison de NServiceBus dans votre fichier Program.cs :

using NServiceBus;
using System;
using System.Threading.Tasks;
using Messages;

class Program
{
    static async Task Main()
    {
        Console.Title = "Sender";
        var endpointConfiguration = new EndpointConfiguration("SenderEndpoint");

        // Use RabbitMQ Transport
        var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        transport.ConnectionString("host=localhost");

        // Set up error queue
        endpointConfiguration.SendFailedMessagesTo("error");

        // Set up audit queue
        endpointConfiguration.AuditProcessedMessagesTo("audit");

        // Start the endpoint
        var endpointInstance = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false);
        Console.WriteLine("Press Enter to send a message...");
        Console.ReadLine();

        // Send a message
        var message = new MyMessage
        {
            Content = "Hello, NServiceBus with RabbitMQ!"
        };
        await endpointInstance.Send("ReceiverEndpoint", message).ConfigureAwait(false);
        Console.WriteLine("Message sent. Press Enter to exit...");
        Console.ReadLine();

        // Stop the endpoint
        await endpointInstance.Stop().ConfigureAwait(false);
    }
}
using NServiceBus;
using System;
using System.Threading.Tasks;
using Messages;

class Program
{
    static async Task Main()
    {
        Console.Title = "Sender";
        var endpointConfiguration = new EndpointConfiguration("SenderEndpoint");

        // Use RabbitMQ Transport
        var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        transport.ConnectionString("host=localhost");

        // Set up error queue
        endpointConfiguration.SendFailedMessagesTo("error");

        // Set up audit queue
        endpointConfiguration.AuditProcessedMessagesTo("audit");

        // Start the endpoint
        var endpointInstance = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false);
        Console.WriteLine("Press Enter to send a message...");
        Console.ReadLine();

        // Send a message
        var message = new MyMessage
        {
            Content = "Hello, NServiceBus with RabbitMQ!"
        };
        await endpointInstance.Send("ReceiverEndpoint", message).ConfigureAwait(false);
        Console.WriteLine("Message sent. Press Enter to exit...");
        Console.ReadLine();

        // Stop the endpoint
        await endpointInstance.Stop().ConfigureAwait(false);
    }
}
Imports NServiceBus
Imports System
Imports System.Threading.Tasks
Imports Messages

Friend Class Program
	Shared Async Function Main() As Task
		Console.Title = "Sender"
		Dim endpointConfiguration As New EndpointConfiguration("SenderEndpoint")

		' Use RabbitMQ Transport
		Dim transport = endpointConfiguration.UseTransport(Of RabbitMQTransport)()
		transport.ConnectionString("host=localhost")

		' Set up error queue
		endpointConfiguration.SendFailedMessagesTo("error")

		' Set up audit queue
		endpointConfiguration.AuditProcessedMessagesTo("audit")

		' Start the endpoint
		Dim endpointInstance = Await Endpoint.Start(endpointConfiguration).ConfigureAwait(False)
		Console.WriteLine("Press Enter to send a message...")
		Console.ReadLine()

		' Send a message
		Dim message = New MyMessage With {.Content = "Hello, NServiceBus with RabbitMQ!"}
		Await endpointInstance.Send("ReceiverEndpoint", message).ConfigureAwait(False)
		Console.WriteLine("Message sent. Press Enter to exit...")
		Console.ReadLine()

		' Stop the endpoint
		Await endpointInstance.Stop().ConfigureAwait(False)
	End Function
End Class
$vbLabelText   $csharpLabel

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 5 - Exemple de sortie console

Créer un Message

Pour représenter le message, ajoutez une nouvelle classe.

public class MyMessage : IMessage
{
    public string Content { get; set; }
}
public class MyMessage : IMessage
{
    public string Content { get; set; }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Créer un Message Handler

Pour gérer le message, ajoutez une nouvelle classe.

using NServiceBus;
using System.Threading.Tasks;

public class MyMessageHandler : IHandleMessages<MyMessage>
{
    public Task Handle(MyMessage message, IMessageHandlerContext context)
    {
        Console.WriteLine($"Received message: {message.Content}");
        return Task.CompletedTask;
    }
}
using NServiceBus;
using System.Threading.Tasks;

public class MyMessageHandler : IHandleMessages<MyMessage>
{
    public Task Handle(MyMessage message, IMessageHandlerContext context)
    {
        Console.WriteLine($"Received message: {message.Content}");
        return Task.CompletedTask;
    }
}
Imports NServiceBus
Imports System.Threading.Tasks

Public Class MyMessageHandler
	Implements IHandleMessages(Of MyMessage)

	Public Function Handle(ByVal message As MyMessage, ByVal context As IMessageHandlerContext) As Task
		Console.WriteLine($"Received message: {message.Content}")
		Return Task.CompletedTask
	End Function
End Class
$vbLabelText   $csharpLabel

Envoi d'un Message

Envoyez un message depuis le point de terminaison. Adaptez votre méthode principale pour transmettre un message avec l'aide du gestionnaire.

using NServiceBus;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        Console.Title = "Receiver";
        var endpointConfiguration = new EndpointConfiguration("ReceiverEndpoint");

        // Serialization configuration
        endpointConfiguration.UseSerialization<NewtonsoftJsonSerializer>();

        // Use RabbitMQ Transport
        var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        transport.UseConventionalRoutingTopology(QueueType.Quorum);
        transport.ConnectionString("host=localhost");

        // Set up error queue
        endpointConfiguration.SendFailedMessagesTo("error");

        // Set up audit queue
        endpointConfiguration.AuditProcessedMessagesTo("audit");
        endpointConfiguration.EnableInstallers();

        // Start the endpoint
        var endpointInstance = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false);
        Console.WriteLine("Press Enter to exit...");
        Console.ReadLine();

        // Stop the endpoint
        await endpointInstance.Stop().ConfigureAwait(false);
    }
}
using NServiceBus;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        Console.Title = "Receiver";
        var endpointConfiguration = new EndpointConfiguration("ReceiverEndpoint");

        // Serialization configuration
        endpointConfiguration.UseSerialization<NewtonsoftJsonSerializer>();

        // Use RabbitMQ Transport
        var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        transport.UseConventionalRoutingTopology(QueueType.Quorum);
        transport.ConnectionString("host=localhost");

        // Set up error queue
        endpointConfiguration.SendFailedMessagesTo("error");

        // Set up audit queue
        endpointConfiguration.AuditProcessedMessagesTo("audit");
        endpointConfiguration.EnableInstallers();

        // Start the endpoint
        var endpointInstance = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false);
        Console.WriteLine("Press Enter to exit...");
        Console.ReadLine();

        // Stop the endpoint
        await endpointInstance.Stop().ConfigureAwait(false);
    }
}
Imports NServiceBus
Imports System
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main() As Task
		Console.Title = "Receiver"
		Dim endpointConfiguration As New EndpointConfiguration("ReceiverEndpoint")

		' Serialization configuration
		endpointConfiguration.UseSerialization(Of NewtonsoftJsonSerializer)()

		' Use RabbitMQ Transport
		Dim transport = endpointConfiguration.UseTransport(Of RabbitMQTransport)()
		transport.UseConventionalRoutingTopology(QueueType.Quorum)
		transport.ConnectionString("host=localhost")

		' Set up error queue
		endpointConfiguration.SendFailedMessagesTo("error")

		' Set up audit queue
		endpointConfiguration.AuditProcessedMessagesTo("audit")
		endpointConfiguration.EnableInstallers()

		' Start the endpoint
		Dim endpointInstance = Await Endpoint.Start(endpointConfiguration).ConfigureAwait(False)
		Console.WriteLine("Press Enter to exit...")
		Console.ReadLine()

		' Stop the endpoint
		Await endpointInstance.Stop().ConfigureAwait(False)
	End Function
End Class
$vbLabelText   $csharpLabel

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 6 - Exemple de sortie console

Lancez l'application et construisez le projet. La console devrait afficher le message "Message reçu : Hello, NServiceBus !"

Démarrage

Dans un projet C#, intégrer NServiceBus avec RabbitMQ et IronPDF implique de configurer des messages entre NServiceBus et RabbitMQ ainsi que d'utiliser IronPDF pour créer des PDF. Voici un guide complet pour vous lancer :

Qu'est-ce que IronPDF ?

IronPDF est une bibliothèque .NET conçue pour créer, lire, éditer et convertir des fichiers PDF. Avec elle, les programmeurs peuvent travailler avec des fichiers PDF dans des applications C# ou VB.NET avec un outil puissant et intuitif. Les caractéristiques et capacités d'IronPDF sont entièrement décrites ci-dessous :

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 7 - IronPDF : page d'accueil de la bibliothèque C# PDF

Caractéristiques de IronPDF

Génération de PDF à partir de HTML

Convertissez JavaScript, HTML et CSS en PDF. Prend en charge les requêtes média et le design réactif, deux normes web contemporaines. Utile pour produire des documents PDF à style dynamique, des factures et des rapports à l'aide de HTML et CSS.

Édition de PDF

Ajouter du texte, des images et d'autres contenus aux PDF existants. Extraire du texte et des images des fichiers PDF. Combiner plusieurs PDF en un fichier unique. Diviser les fichiers PDF en plusieurs documents. Inclure des annotations, pieds de page, en-têtes et filigranes.

Conversion de PDF

Convertir des formats de fichiers Word, Excel, image, et autres en PDF. Conversion de PDF en image (PNG, JPEG, etc.).

Performance et Fiabilité

Les objectifs conceptuels de la haute performance et de la fiabilité dans les environnements de production. Gère efficacement les documents volumineux.

Installation d'IronPDF

Installez IronPDF en ouvrant la Console du Gestionnaire de Paquets NuGet.

Install-Package IronPdf

Configurer l'Expéditeur Avec le Message

Messages est un projet partagé (bibliothèque de classes) que l'expéditeur et le destinataire utiliseront tous les deux. Définissez la classe de message dans le projet Messages. Créez un nouveau projet de Bibliothèque de Classes appelé Messages et ajoutez-le à la solution.

Définir le Message :

À l'intérieur du projet Messages, créez une nouvelle classe appelée GeneratePdfMessage.cs :

using NServiceBus;

public class GeneratePdfMessage : IMessage
{
    public string Content { get; set; }
    public string OutputPath { get; set; }
}
using NServiceBus;

public class GeneratePdfMessage : IMessage
{
    public string Content { get; set; }
    public string OutputPath { get; set; }
}
Imports NServiceBus

Public Class GeneratePdfMessage
	Implements IMessage

	Public Property Content() As String
	Public Property OutputPath() As String
End Class
$vbLabelText   $csharpLabel

Dans les projets de l'Expéditeur et du Récepteur, incluez une référence au projet Messages.

Configurez le point de terminaison de NServiceBus dans le projet de l'Expéditeur pour utiliser RabbitMQ pour la livraison des messages.

using NServiceBus;
using System;
using System.Threading.Tasks;
using Messages;

class Program
{
    static async Task Main()
    {
        Console.Title = "Sender";
        var endpointConfiguration = new EndpointConfiguration("SenderEndpoint");

        // Use RabbitMQ Transport
        var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        transport.ConnectionString("host=localhost");

        // Set up error queue
        endpointConfiguration.SendFailedMessagesTo("error");

        // Set up audit queue
        endpointConfiguration.AuditProcessedMessagesTo("audit");
        endpointConfiguration.EnableInstallers();

        // Start the endpoint
        var endpointInstance = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false);
        Console.WriteLine("Press Enter to send a message...");
        Console.ReadLine();

        // Send a message
        var message = new GeneratePdfMessage
        {
            Content = "<h1>Hello, NServiceBus with RabbitMQ and IronPDF!</h1>",
            OutputPath = "output.pdf"
        };
        await endpointInstance.Send("ReceiverEndpoint", message).ConfigureAwait(false);
        Console.WriteLine("Message sent. Press Enter to exit...");
        Console.ReadLine();

        // Stop the endpoint
        await endpointInstance.Stop().ConfigureAwait(false);
    }
}
using NServiceBus;
using System;
using System.Threading.Tasks;
using Messages;

class Program
{
    static async Task Main()
    {
        Console.Title = "Sender";
        var endpointConfiguration = new EndpointConfiguration("SenderEndpoint");

        // Use RabbitMQ Transport
        var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        transport.ConnectionString("host=localhost");

        // Set up error queue
        endpointConfiguration.SendFailedMessagesTo("error");

        // Set up audit queue
        endpointConfiguration.AuditProcessedMessagesTo("audit");
        endpointConfiguration.EnableInstallers();

        // Start the endpoint
        var endpointInstance = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false);
        Console.WriteLine("Press Enter to send a message...");
        Console.ReadLine();

        // Send a message
        var message = new GeneratePdfMessage
        {
            Content = "<h1>Hello, NServiceBus with RabbitMQ and IronPDF!</h1>",
            OutputPath = "output.pdf"
        };
        await endpointInstance.Send("ReceiverEndpoint", message).ConfigureAwait(false);
        Console.WriteLine("Message sent. Press Enter to exit...");
        Console.ReadLine();

        // Stop the endpoint
        await endpointInstance.Stop().ConfigureAwait(false);
    }
}
Imports NServiceBus
Imports System
Imports System.Threading.Tasks
Imports Messages

Friend Class Program
	Shared Async Function Main() As Task
		Console.Title = "Sender"
		Dim endpointConfiguration As New EndpointConfiguration("SenderEndpoint")

		' Use RabbitMQ Transport
		Dim transport = endpointConfiguration.UseTransport(Of RabbitMQTransport)()
		transport.ConnectionString("host=localhost")

		' Set up error queue
		endpointConfiguration.SendFailedMessagesTo("error")

		' Set up audit queue
		endpointConfiguration.AuditProcessedMessagesTo("audit")
		endpointConfiguration.EnableInstallers()

		' Start the endpoint
		Dim endpointInstance = Await Endpoint.Start(endpointConfiguration).ConfigureAwait(False)
		Console.WriteLine("Press Enter to send a message...")
		Console.ReadLine()

		' Send a message
		Dim message = New GeneratePdfMessage With {
			.Content = "<h1>Hello, NServiceBus with RabbitMQ and IronPDF!</h1>",
			.OutputPath = "output.pdf"
		}
		Await endpointInstance.Send("ReceiverEndpoint", message).ConfigureAwait(False)
		Console.WriteLine("Message sent. Press Enter to exit...")
		Console.ReadLine()

		' Stop the endpoint
		Await endpointInstance.Stop().ConfigureAwait(False)
	End Function
End Class
$vbLabelText   $csharpLabel

Configuration du Point de terminaison : le point de terminaison est initialisé avec le nom "SenderEndpoint" en appelant new EndpointConfiguration("SenderEndpoint").

endpointConfiguration est la configuration du transport. En se connectant à une instance locale de RabbitMQ, la méthode UseTransport() configure NServiceBus pour utiliser RabbitMQ comme mécanisme de transport.

Les Files d'attente d'Audit et d'Erreur où envoyer les messages échoués et auditer les messages traités sont configurées à l'aide de SendFailedMessagesTo("error") et AuditProcessedMessagesTo("audit"), respectivement.

Message envoyé : endpointInstance.Send("ReceiverEndpoint", message) envoie un GeneratePdfMessage au "ReceiverEndpoint".

Configurer le Récepteur pour Générer PDF

Configurez le point de terminaison de NServiceBus dans le projet Récepteur pour accepter les messages via RabbitMQ et produire des PDF en utilisant IronPDF.

using NServiceBus;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        Console.Title = "Receiver";
        var endpointConfiguration = new EndpointConfiguration("ReceiverEndpoint");

        // Use RabbitMQ Transport
        var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        transport.ConnectionString("host=localhost");

        // Set up error queue
        endpointConfiguration.SendFailedMessagesTo("error");

        // Set up audit queue
        endpointConfiguration.AuditProcessedMessagesTo("audit");

        // Start the endpoint
        var endpointInstance = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false);
        Console.WriteLine("Press Enter to exit...");
        Console.ReadLine();

        // Stop the endpoint
        await endpointInstance.Stop().ConfigureAwait(false);
    }
}
using NServiceBus;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        Console.Title = "Receiver";
        var endpointConfiguration = new EndpointConfiguration("ReceiverEndpoint");

        // Use RabbitMQ Transport
        var transport = endpointConfiguration.UseTransport<RabbitMQTransport>();
        transport.ConnectionString("host=localhost");

        // Set up error queue
        endpointConfiguration.SendFailedMessagesTo("error");

        // Set up audit queue
        endpointConfiguration.AuditProcessedMessagesTo("audit");

        // Start the endpoint
        var endpointInstance = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false);
        Console.WriteLine("Press Enter to exit...");
        Console.ReadLine();

        // Stop the endpoint
        await endpointInstance.Stop().ConfigureAwait(false);
    }
}
Imports NServiceBus
Imports System
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main() As Task
		Console.Title = "Receiver"
		Dim endpointConfiguration As New EndpointConfiguration("ReceiverEndpoint")

		' Use RabbitMQ Transport
		Dim transport = endpointConfiguration.UseTransport(Of RabbitMQTransport)()
		transport.ConnectionString("host=localhost")

		' Set up error queue
		endpointConfiguration.SendFailedMessagesTo("error")

		' Set up audit queue
		endpointConfiguration.AuditProcessedMessagesTo("audit")

		' Start the endpoint
		Dim endpointInstance = Await Endpoint.Start(endpointConfiguration).ConfigureAwait(False)
		Console.WriteLine("Press Enter to exit...")
		Console.ReadLine()

		' Stop the endpoint
		Await endpointInstance.Stop().ConfigureAwait(False)
	End Function
End Class
$vbLabelText   $csharpLabel

Cette configuration, pour le point de terminaison de l'"ReceiverEndpoint", est comparable à la configuration de l'Expéditeur.

Gestionnaire de Message

Dans le projet du Récepteur, créez une nouvelle classe appelée GeneratePdfMessageHandler.cs.

using NServiceBus;
using System;
using System.Threading.Tasks;
using Messages;
using IronPdf;

public class GeneratePdfMessageHandler : IHandleMessages<GeneratePdfMessage>
{
    public Task Handle(GeneratePdfMessage message, IMessageHandlerContext context)
    {
        Console.WriteLine($"Received message to generate PDF with content: {message.Content}");

        // Generate PDF
        var renderer = new HtmlToPdf();
        var pdf = renderer.RenderHtmlAsPdf(message.Content);
        pdf.SaveAs(message.OutputPath);
        Console.WriteLine($"PDF generated and saved to: {message.OutputPath}");

        return Task.CompletedTask;
    }
}
using NServiceBus;
using System;
using System.Threading.Tasks;
using Messages;
using IronPdf;

public class GeneratePdfMessageHandler : IHandleMessages<GeneratePdfMessage>
{
    public Task Handle(GeneratePdfMessage message, IMessageHandlerContext context)
    {
        Console.WriteLine($"Received message to generate PDF with content: {message.Content}");

        // Generate PDF
        var renderer = new HtmlToPdf();
        var pdf = renderer.RenderHtmlAsPdf(message.Content);
        pdf.SaveAs(message.OutputPath);
        Console.WriteLine($"PDF generated and saved to: {message.OutputPath}");

        return Task.CompletedTask;
    }
}
Imports NServiceBus
Imports System
Imports System.Threading.Tasks
Imports Messages
Imports IronPdf

Public Class GeneratePdfMessageHandler
	Implements IHandleMessages(Of GeneratePdfMessage)

	Public Function Handle(ByVal message As GeneratePdfMessage, ByVal context As IMessageHandlerContext) As Task
		Console.WriteLine($"Received message to generate PDF with content: {message.Content}")

		' Generate PDF
		Dim renderer = New HtmlToPdf()
		Dim pdf = renderer.RenderHtmlAsPdf(message.Content)
		pdf.SaveAs(message.OutputPath)
		Console.WriteLine($"PDF generated and saved to: {message.OutputPath}")

		Return Task.CompletedTask
	End Function
End Class
$vbLabelText   $csharpLabel

GeneratePdfMessageHandler utilise l'interface IHandleMessages pour gérer les messages de type GeneratePdfMessage.

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 8 - Exemple de sortie console

Méthode de Gestion : Après avoir reçu le message, la fonction Handle crée un PDF en utilisant IronPDF. Le contenu HTML dans le message est converti en PDF par le code de rendu HtmlToPdf, qui le sauvegarde ensuite dans le chemin de sortie désigné.

NServiceBus C# (Comment ça marche pour les développeurs) : Figure 9 - Sortie PDF en utilisant NServiceBus avec RabbitMQ en conjonction avec IronPDF

Conclusion

NServiceBus peut être intégré avec RabbitMQ et IronPDF en C# pour fournir une solution évolutive et stable pour les systèmes distribués qui ont besoin de générer des PDF de manière dynamique et fiable. Cette combinaison utilise les capacités de traitement des messages de NServiceBus, la fiabilité et l'adaptabilité de RabbitMQ en tant que courtier de messages, et les puissants outils d'édition PDF d'IronPDF. Le découplage entre les services est assuré par l'architecture résultante, permettant une évolution et une évolutivité autonomes.

RabbitMQ assure également la livraison des messages même en cas de pannes de réseau ou d'application. NServiceBus simplifie le routage et le traitement des messages, et IronPDF permet de convertir le texte HTML en documents PDF de haute qualité. Cette intégration offre un cadre flexible pour développer des applications sophistiquées et de grande envergure tout en améliorant la maintenabilité et la fiabilité du système.

Enfin, en ajoutant IronPDF et Iron Software à votre boîte à outils pour la programmation .NET, vous pouvez travailler efficacement avec des codes-barres, créer des PDF, effectuer de la ROC et vous connecter à Excel. IronPDF’s Licensing Page, which starts at $799, seamlessly blends its features and the performance, compatibility, and ease of use of site officiel d'Iron Software pour fournir des applications web supplémentaires et des capacités et un développement plus efficace.

S'il existe des options de licence bien définies adaptées aux besoins spécifiques du projet, les développeurs peuvent choisir le modèle optimal en toute confiance. Ces avantages permettent aux développeurs de gérer efficacement et de manière transparente une gamme de difficultés.

Questions Fréquemment Posées

Comment puis-je utiliser NServiceBus en C# pour le développement de systèmes distribués ?

NServiceBus simplifie le développement de systèmes distribués en C# en abstraitant l'architecture de messagerie. Cela permet aux développeurs de se concentrer sur la logique métier tout en garantissant une gestion et une livraison fiables des messages à travers les microservices.

Quels sont les avantages de l'intégration de NServiceBus avec les bibliothèques de gestion PDF ?

Intégrer NServiceBus avec des bibliothèques de gestion PDF comme IronPDF permet une génération et une gestion efficaces des PDF au sein d'applications distribuées, permettant de créer des systèmes logiciels évolutifs et maintenables.

Comment configurer un projet C# avec NServiceBus et RabbitMQ ?

Pour configurer un projet C# avec NServiceBus et RabbitMQ, créez une nouvelle application Console dans Visual Studio, installez les paquets NuGet NServiceBus et RabbitMQ, et configurez le point de terminaison et le transport de messagerie dans votre code.

Comment NServiceBus améliore-t-il la communication basée sur les messages ?

NServiceBus améliore la communication basée sur les messages en fournissant des modèles de messagerie fiables, tels que le modèle de publication/souscription et la gestion des sagas, garantissant que les messages sont livrés et traités correctement à travers les systèmes distribués.

Quel rôle joue IronPDF dans les systèmes distribués utilisant NServiceBus ?

IronPDF joue un rôle crucial dans les systèmes distribués utilisant NServiceBus en offrant des capacités robustes de génération et de manipulation de PDF, qui peuvent être intégrées dans des flux de travail basés sur les messages pour automatiser les processus de gestion des documents.

Comment pouvez-vous assurer une génération de PDF fiable dans les systèmes distribués utilisant C# ?

La génération de PDF fiable dans les systèmes distribués utilisant C# peut être réalisée en intégrant NServiceBus pour la gestion des messages et IronPDF pour la génération de PDF, en tirant parti des capacités de messagerie de RabbitMQ pour coordonner les tâches et assurer la cohérence.

Comment fonctionne le modèle de publication/souscription dans NServiceBus ?

Dans NServiceBus, le modèle de publication/souscription permet aux services de publier des événements auxquels d'autres services peuvent s'abonner. Cela permet une architecture orientée événements où des changements dans un composant peuvent déclencher des actions dans d'autres, améliorant la réactivité et la scalabilité du système.

Quelle est l'importance de la gestion des sagas dans NServiceBus ?

La gestion des sagas dans NServiceBus est importante pour coordonner les processus métier de longue durée à travers plusieurs services, garantissant que les flux de travail complexes sont exécutés correctement et de manière cohérente au sein des systèmes distribués.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite