Getting Started: Messaging in .NET with NServiceBus

Simplify distributed systems messaging in .NET using the battle-tested NServiceBus framework.

About This Course

Gain practical, hands-on experience with NServiceBus and the Particular Platform. You will build a complete, foundational system from the ground up, mastering the essential components: messages, endpoints, transports, routing, and persistence. As you construct this system, you will be introduced to crucial architectural concepts, including sagas for managing simple long-running business processes and the Outbox pattern for ensuring reliable message delivery. Additionally, you'll learn to observe and gain insight into your messaging system using specialised tools such as ServiceControl and ServicePulse. By the end of the course, you will have all the skills needed to begin working with NServiceBus in real projects.

Course Curriculum

5h 10m 7 sections
Welcome
02:25 Free preview
What will you learn in this course?
03:49 Free preview
Who is the course for and prerequisites
02:22 Free preview
What is NServiceBus
02:12
Why use an abstraction like NServiceBus
04:40
Particular Platform tools overview
01:19
Messages and message types
03:18
Defining messages
02:09
Message design considerations
02:12
Persistence
02:27
Introducing the Learning Transport
00:48
Exploring the project
01:28
Configuring NServiceBus
02:16
Adding a serialization type
00:50
Transports
02:00
Using the IMessageSession
00:49
Sending our first command
03:23
Routing
00:44
Using the Learning transport
04:35
Endpoints
05:38
Obtaining a developer license
04:11
Installing Particular Templates
01:27
Creating a new endpoint
02:38
Reorganizing the project
04:38
Handling messages
09:54
Controlling the OrderId
02:27
Publishing events
09:50
AutoSubscribe and events
03:12
Section recap
01:04
Installing RabbitMq in Docker
01:00
The RabbitMq transport
04:48
Enabling and using Installers
05:22
Callbacks and the Request/Reply pattern
10:32
Message headers
01:26
Adding custom message headers
02:41
Reading message headers
01:51
Setting a message destination
03:31
Adding a global header
01:58
Mutators
11:21
Behaviors
05:30
Filtering message types in Behaviors
00:41
Enforcing validation rules
03:47
Why use Behaviors
01:23
Time to Live of a message
01:33
Expiring messages per type
04:49
Expiring messages globally
00:51
Considerations about TTBR
01:42
Section recap
01:17
Intro to dealing with errors
01:38
Types of failures & retry policies
04:10
Configuring immediate retries
04:04
Delayed retries
04:32
Unrecoverable exceptions
02:09
Error notifications
02:42
Using Automatic rate limiting
07:05
Considerations about Rate limiting
01:45
Particular Platform - Using SCMU to install ServiceControl
05:43
Using ServicePulse
01:59
Recoverability with ServicePulse
03:55
Enabling Message editing
02:47
Section recap
01:12
The Outbox pattern
06:22
Delivery vs Processing
04:21
Inbox pattern
01:33
Revisiting the project
02:32
Enabling the outbox
02:12
Customizing the outbox
02:59
Implementing the outbox
06:38
Concurrency control in the outbox
03:02
Transactional Session
02:35
Enabling the transactional Session
01:04
Implementing a transactional Session
07:11
Section recap
02:21
The saga pattern
04:27
Orchestration vs Choreography
04:03
Adding a Saga
03:28
Defining Sagas
12:10
Timeouts and scheduling Events
03:45
Enabling SagaAudit and message auditing feature
02:51
Debugging sagas with SagaView
04:41
Publishing events from the Saga
08:39
Compensating an event
09:27
Removing a saga from the database
00:19
Saga design best practices
03:40
Considerations about ending the saga
00:58
Handling out-of-order messages
01:12
Section recap
03:17
Licensing considerations
03:27
Conclusion
02:38

Meet Your Instructor

Irina Scurtu

Irina Scurtu

Irina Scurtu (Dominte) is a software architect, international speaker, Microsoft MVP for developer technologies, and Microsoft certified trainer (MCT) with a wealth of experience. Having taught classes, workshops, and presentations for over 2,000 hours, Irina is passionate about coding and keeping abreast of the latest trends and best practices in software architecture and .NET. Twice a year, for five months each time, Irina teaches .NET and C# to aspiring software developers or people interested in software development or seeking to expand their knowledge. She is an active member of the community and has founded the DotNet Iasi User Group and the dotnetdays.ro conference, where she connects with like-minded developers who are eager to share their expertise and insights. Irina is also a prolific blogger, and her website, https://irina.codes, features a wealth of articles on various coding topics.

View all courses by Irina Scurtu

What's New

Getting Started: AI for .NET Developers
course

Getting Started: AI for .NET Developers

Get started with integrating AI into your .NET applications effectively using the latest LLM best practices.

Learn More
Getting Started: Building .NET Applications on AWS
course

Getting Started: Building .NET Applications on AWS

Learn how to build and deploy .NET applications on AWS using CDK, Lambda, DynamoDB, S3, and more.

Learn More
What's new in C# 14
blog

What's new in C# 14

This guide covers every new C# 14 feature, explains its benefits, and provides practical code examples to help you navigate how you can use them.

Learn More
Let's Build It: AI Chatbot with RAG in .NET Using Your Data
course

Let's Build It: AI Chatbot with RAG in .NET Using Your Data

Build a Retrieval-Augmented Generation (RAG) chatbot that can answer questions using your data.

Learn More
From Zero to Hero: SignalR in .NET
course

From Zero to Hero: SignalR in .NET

Enable enterprise-grade real-time communication for your web apps with SignalR.

Learn More
Deep Dive: Solution Architecture
course

Deep Dive: Solution Architecture

Master solution architecture and turn business needs into scalable, maintainable systems.

Learn More
Migrating: ASP.NET Web APIs to ASP.NET Core
course

Migrating: ASP.NET Web APIs to ASP.NET Core

A step-by-step process to migrate ASP.NET Web APIs from .NET Framework to ASP.NET Core.

Learn More
Getting Started: Caching in .NET
course

Getting Started: Caching in .NET

Let's make the hardest thing in programming easy for .NET software engineers.

Learn More
From Zero to Hero: Testing with xUnit in C#
course

From Zero to Hero: Testing with xUnit in C#

Learn how to test any codebase in .NET with the latest version of xUnit, the industry-standard testing library.

Learn More
Create a ChatGPT Console AI Chatbot in C#
blog

Create a ChatGPT Console AI Chatbot in C#

This walkthrough is your hands-on entry point to create a basic C# console application that talks to ChatGPT using the OpenAI API.

Learn More