NServiceBus C# (jak to działa dla programistów)
NServiceBus to potężna i elastyczna magistrala usług zaprojektowana dla platformy .NET Framework, która usprawnia tworzenie systemów rozproszonych. Oferowane przez nią solidne wzorce komunikacyjne gwarantują niezawodną obsługę i dostarczanie komunikatów w wielu mikrousługach i aplikacjach. NServiceBus abstrahuje podstawową architekturę komunikacyjną, pozwalając programistom skupić się na logice biznesowej zamiast na zawiłościach tworzenia systemów rozproszonych.
Natomiast IronPDF to popularna biblioteka .NET służąca do generowania, przeglądania i modyfikowania plików PDF. Jest znane z łatwości obsługi i wysokiej wydajności w tworzeniu plików PDF z różnych źródeł, takich jak pliki ASPX i HTML.
Dzięki połączeniu NServiceBus i IronPDF programiści mogą tworzyć niezawodne, skalowalne i łatwe w utrzymaniu systemy oprogramowania, które mogą generować dokumenty PDF i zarządzać nimi w ramach działalności biznesowej.
W tym artykułe przyjrzymy się, jak skonfigurować prosty projekt C# NServiceBus i zintegrować go z IronPDF, abyś mógł zbudować usprawniony przepływ pracy do zarządzania i tworzenia dokumentów PDF w architekturze aplikacji rozproszonej. Po przeczytaniu tego wprowadzającego samouczka powinieneś dokładnie wiedzieć, w jaki sposób te dwie skuteczne technologie mogą współpracować, aby uprościć zadania związane z plikami PDF w środowisku rozproszonym.
What is NServiceBus C#?
NServiceBus to potężny i elastyczny framework, który ułatwia tworzenie systemów rozproszonych i architektur .NET Framework zorientowanych na usługi. Korzystając z NServiceBus, można łatwo zarządzać różnymi typami komunikatów i zapewnić niezawodną komunikację. Ma to kluczowe znaczenie, szczególnie w aplikacjach internetowych i podobnych architekturach, gdzie niezbędne jest płynne kierowanie i przetwarzanie komunikatów. Moduły obsługi komunikatów NServiceBus skutecznie radzą sobie z odbieraniem komunikatów, zapewniając płynną interakcję wszystkich komponentów logicznych. NServiceBus posiada następujące ważne funkcje:

Funkcje NServiceBus
Komunikacja oparta na komunikatach
NServiceBus wspiera komunikację opartą na komunikatach między różnymi usługami lub komponentami w systemie. Dzięki rozdzieleniu komponentów metoda ta pozwala tworzyć projekty, które łatwiej skalować i zarządzać nimi.
Niezawodna komunikacja
Dzięki automatycznemu zarządzaniu ponownymi próbami, kolejkami wiadomości nieosiągniętych adresatów i innymi technikami odporności na awarie gwarantuje niezawodne dostarczanie wiadomości. W systemach rozproszonych, gdzie często zdarzają się awarie sieci i inne problemy, ta niezawodność jest niezbędna.
Model publikowania/subskrypcji
Wzorzec publikowania/subskrypcji jest obsługiwany przez NServiceBus, umożliwiając usługom publikowanie zdarzeń i pozwalając innym usługom subskrybować te zdarzenia. Umożliwia to tworzenie architektur sterowanych zdarzeniami, w których modyfikacje wprowadzone w zdarzeniach w jednym komponencie systemu mogą wywołać reakcje w innych komponentach.
Zarządzanie sagą
Długotrwałe procesy biznesowe mogą być zarządzane za pomocą NServiceBus dzięki zintegrowanej obsłudze sag. Sagi umożliwiają platformie usługowej zarządzanie stanem i koordynowanie skomplikowanych operacji między kilkoma usługami.
Rozszerzalność i dostosowywanie
Oferuje wyjątkowy poziom rozszerzalności, umożliwiając programistom personalizację procesu obsługi, przetwarzania i transportu wiadomości. Ze względu na swoją elastyczność, może być używany w różnych scenariuszach.
Integracja z różnymi platformami przesyłania wiadomości
Z NServiceBus można zintegrować liczne systemy przesyłania wiadomości, w tym MSMQ, RabbitMQ, Azure Service Bus, Amazon SQS i inne. Dzięki temu programiści mogą wybrać rozwiązanie infrastruktury komunikacyjnej, które najlepiej odpowiada ich wymaganiom.
Create and configure NServiceBus in C
Musisz najpierw skonfigurować środowisko programistyczne, stworzyć podstawowy projekt i zbudować podstawową usługę przesyłania wiadomości oraz scenariusz zanim zaczniesz używać NServiceBus w projekcie C#. Oto przewodnik krok po kroku, który Cię w tym wspomoże.
Utwórz nowy projekt Visual Studio
W Visual Studio proces tworzenia projektu konsoli jest prosty. Użyj tych prostych kroków w środowisku Visual Studio, aby uruchomić aplikację konsolową:
Przed użyciem upewnij się, że masz zainstalowane Visual Studio na swoim komputerze.
Rozpocznij nowy projekt
Kliknij Plik, następnie wybierz Nowy, a na koniec Projekt.

Możesz wybrać szablon "Aplikacja konsoli" lub "Aplikacja konsoli (.NET Core)" z listy referencji szablonów projektów poniżej.
W polu "Nazwa" podaj nazwę swojego projektu.

Wybierz lokalizację przechowywania projektu.
Kliknięcie przycisku "Utwórz" spowoduje uruchomienie projektu aplikacji konsolowej.

Zainstaluj pakiety NServiceBus
Przejdź do Narzędzia > Menedżer pakietów NuGet > Konsola Menedżera pakietów, aby otworzyć konsolę Menedżera pakietów NuGet.
Uruchom poniższe polecenie, aby zainstalować pakiet NuGet NServiceBus.
Install-Package NServiceBus
Wybierz transport
NServiceBus potrzebuje transportu do odbierania i wysyłania wiadomości. Pozostaniemy przy Learning Transport, ponieważ jest łatwy w użyciu i dobrze nadaje się do testowania i programowania.
Zainstaluj pakiet dla Learning Transport, wykonując.
Install-Package NServiceBus.RabbitMQ
Configure NServiceBus
Skonfiguruj punkt końcowy
Skonfiguruj punkt koncowy NServiceBus w pliku 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

Utwórz wiadomość
Aby reprezentować wiadomość, dodaj nową klasę.
public class MyMessage : IMessage
{
public string Content { get; set; }
}
public class MyMessage : IMessage
{
public string Content { get; set; }
}
Public Class MyMessage
Implements IMessage
Public Property Content As String
End Class
Utwórz obsługę wiadomości
Aby obsłużyć wiadomość, dodaj nową klasę.
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
Wysyłanie wiadomości
Wyślij wiadomość z punktu końcowego. Dostosuj swoją główną metodę do przesyłania wiadomości przy pomocy handlera.
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

Uruchom aplikację i zbuduj projekt. Konsola powinna wyświetlić wiadomość "Odebrano wiadomość: Witaj, NServiceBus!"
Pierwsze kroki
W projekcie C#, integracja NServiceBus z RabbitMQ i IronPDF polega na skonfigurowaniu wiadomości między NServiceBus a RabbitMQ oraz wykorzystaniu IronPDF do tworzenia plików PDF. Oto szczegółowy przewodnik, jak zacząć:
Czym jest IronPDF?
IronPDF to biblioteka .NET zaprojektowana do tworzenia, odczytu, edycji i konwertowania plików PDF. Dzięki niej programiści mogą pracować z plikami PDF w aplikacjach C# lub VB.NET z użyciem potężnego i intuicyjnego narzędzia. Charakterystyka i możliwości IronPDF są w pełni opisane poniżej:

Funkcje IronPDF
Generowanie plików PDF z HTML
Konwertuj JavaScript, HTML i CSS do formatu PDF. Obsługuje zapytania o media i responsywny projekt, dwa współczesne standardy internetowe. Przydatna do tworzenia dynamicznie stylizowanych dokumentów PDF, faktur i raportów przy użyciu HTML i CSS.
Edycja plików PDF
Do już istniejących plików PDF, dodaj tekst, obrazy i inne materiały. Wyodrębnij tekst i obrazy z plików PDF. Połącz kilka plików PDF w jeden plik. Podziel pliki PDF na kilka dokumentów. Dodaj adnotacje, stopki, nagłówki oraz znaki wodne.
Konwersja plików PDF
Przekształć formaty plików Word, Excel, obrazy i inne do PDF. Konwersja PDF na obraz (PNG, JPEG, itp.).
Wydajność i niezawodność
Wysoka wydajność i niezawodność to główne cele projektowe w środowiskach produkcyjnych. Efektywnie zarządza dużymi dokumentami.
Instalacja IronPDF
Zainstaluj IronPDF, otwierając Konsolę Menedżera Pakietów NuGet.
Install-Package IronPdf
Skonfiguruj nadawcę z wiadomością
Messages to wspólny projekt (biblioteka klasowa), z którego korzysta zarówno nadawca, jak i odbiorca. Zdefiniuj klasę wiadomości w projekcie Messages. Stwórz nowy projekt bibliotek klas pod nazwą Messages i dodaj go do rozwiązania.
Zdefiniuj wiadomość:
W projekcie Messages utworz nowa klase nazwana 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
W obu projektach, nadawcy i odbiorcy, uwzględnij odniesienie do projektu Messages.
Skonfiguruj punkt końcowy NServiceBus w projekcie nadawcy, aby używał RabbitMQ do przesyłania wiadomości.
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
Konfiguracja punktu końcowego: punkt końcowy jest inicjalizowany przy użyciu nazwy "SenderEndpoint" po wywołaniu new EndpointConfiguration("SenderEndpoint").
endpointConfiguration to konfiguracja transportu. Łącząc się z lokalnym wystąpieniem RabbitMQ, metoda UseTransport() konfiguruje NServiceBus do używania RabbitMQ jako mechanizmu transportu.
Kolejki audytu i bledow: Miejsce wysylania blednych i procesowanych wiadomosci jest konfigurowane za pomoca SendFailedMessagesTo("error") i AuditProcessedMessagesTo("audit"), odpowiednio.
Wiadomosc wyslana: endpointInstance.Send("ReceiverEndpoint", message) wysyla GeneratePdfMessage do "ReceiverEndpoint".
Skonfiguruj odbiorcę do generowania PDF
Skonfiguruj punkt końcowy NServiceBus w projekcie odbiorcy, aby akceptować wiadomości przez RabbitMQ i generować pliki PDF przy pomocy 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
Ta konfiguracja, dla punktu odbiorcy "ReceiverEndpoint", jest porównywalna z konfiguracją nadawcy.
Handler wiadomości
W projekcie Receiver utworz nowa klase nazwana 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
GeneratePdfMessageHandler uzywa interfejsu IHandleMessages do obslugi wiadomosci typu GeneratePdfMessage.

Metoda obslugi: Po otrzymaniu wiadomosci funkcja Handle tworzy PDF za pomoca IronPDF. Kod renderera HtmlToPdf konwertuje tresc HTML w wiadomosci na PDF, a nastepnie zapisuje go w wyznaczonej sciezce wyjscia.

Wnioski
NServiceBus może być zintegrowany z RabbitMQ i IronPDF w C#, aby zapewnić skalowalne i stabilne rozwiązanie dla systemów rozproszonych, które wymagają dynamicznego i niezawodnego generowania plików PDF. Ta kombinacja wykorzystuje możliwości przetwarzania wiadomości NServiceBus, niezawodność i elastyczność RabbitMQ jako brokera wiadomości oraz solidne narzędzia edycji PDF IronPDF. Odseparowanie między usługami jest zapewnione przez wynikową architekturę, umożliwiając autonomiczny rozwój i skalowalność.
RabbitMQ zapewnia również dostarczanie wiadomości nawet w przypadku awarii sieci lub aplikacji. NServiceBus ułatwia routing i przetwarzanie wiadomości, a IronPDF umożliwia konwersję tekstu HTML do wysokiej jakości dokumentów PDF. Ta integracja oferuje elastyczne ramy do tworzenia zaawansowanych, wielkoskalowych aplikacji, a także poprawia utrzymywalność i niezawodność systemu.
Ostatecznie, poprzez dodanie IronPDF i Iron Software do swojej skrzynki narzędziowej dla programowania .NET, możesz skutecznie pracować z kodami kreskowymi, generować pliki PDF, wykonywać OCR i łączyć się z Excel. Strona licencyjna IronPDF, ktora zaczyna sie od $999, plynnie laczy swoje funkcje oraz wydajnosc, kompatybilnosc i latwosc uzycia elastycznej serii Oficjalnej Strony Iron Software, aby zapewnic dodatkowe aplikacje i mozliwosci webowe oraz bardziej efektywny rozwoj.
Jeśli istnieją dobrze określone opcje licencyjne dostosowane do konkretnych wymagań projektu, programiści mogą wybrać optymalny model z pewnością. Te korzyści pozwalają programistom na skuteczne i przejrzyste radzenie sobie z różnymi trudnościami.
Często Zadawane Pytania
Jak mogę wykorzystać NServiceBus w języku C# do tworzenia systemów rozproszonych?
NServiceBus upraszcza tworzenie systemów rozproszonych w języku C# poprzez abstrakcję architektury komunikacyjnej. Pozwala to programistom skupić się na logice biznesowej, zapewniając jednocześnie niezawodną obsługę i dostarczanie komunikatów między mikrousługami.
Jakie są korzyści z integracji NServiceBus z bibliotekami do zarządzania plikami PDF?
Integracja NServiceBus z bibliotekami do zarządzania plikami PDF, takimi jak IronPDF, pozwala na wydajne generowanie i zarządzanie plikami PDF w aplikacjach rozproszonych, umożliwiając tworzenie skalowalnych i łatwych w utrzymaniu systemów oprogramowania.
Jak skonfigurować projekt C# z wykorzystaniem NServiceBus i RabbitMQ?
Aby skonfigurować projekt C# z wykorzystaniem NServiceBus i RabbitMQ, należy utworzyć nową aplikację konsolową w Visual Studio, zainstalować pakiety NuGet NServiceBus i RabbitMQ oraz skonfigurować punkt końcowy i transport komunikatów w kodzie.
W jaki sposób NServiceBus usprawnia komunikację opartą na komunikatach?
NServiceBus usprawnia komunikację opartą na komunikatach, zapewniając niezawodne wzorce komunikacyjne, takie jak model publikowania/subskrypcji oraz zarządzanie sagami, gwarantując prawidłowe dostarczanie i przetwarzanie komunikatów w systemach rozproszonych.
Jaką rolę odgrywa IronPDF w systemach rozproszonych wykorzystujących NServiceBus?
IronPDF odgrywa kluczową rolę w systemach rozproszonych wykorzystujących NServiceBus, oferując solidne możliwości generowania i edycji plików PDF, które można zintegrować z przepływami pracy opartymi na komunikatach w celu automatyzacji procesów obsługi dokumentów.
Jak zapewnić niezawodne generowanie plików PDF w systemach rozproszonych przy użyciu języka C#?
Niezawodne generowanie plików PDF w systemach rozproszonych przy użyciu języka C# można osiągnąć poprzez integrację NServiceBus do obsługi komunikatów oraz IronPDF do generowania plików PDF, wykorzystując możliwości komunikacyjne RabbitMQ do koordynacji zadań i zapewnienia spójności.
Jak działa model publikowania/subskrypcji w NServiceBus?
W NServiceBus model publikowania/subskrypcji pozwala usługom publikować zdarzenia, które mogą subskrybować inne usługi. Umożliwia to architekturę sterowaną zdarzeniami, w której zmiany w jednym komponencie mogą wywoływać działania w innych, poprawiając responsywność i skalowalność systemu.
Jakie znaczenie ma zarządzanie sagami w NServiceBus?
Zarządzanie sagami w NServiceBus ma duże znaczenie dla koordynacji długotrwałych procesów biznesowych w wielu usługach, zapewniając prawidłowe i spójne wykonywanie złożonych przepływów pracy w systemach rozproszonych.




