Getting Started: Messaging in .NET with MassTransit

Learn how to use asynchronous messaging in your .NET systems

About This Course

Asynchronous messaging is a must for any application, whether monolithic or part of a microservices architecture. Messaging allows applications to offload work so it can be done later while providing the best customer experience for the user. It also allows us to load-level our systems and prevent spikes in traffic from taking down our system. Queues, as well as Topics with a Pub/Sub model, are a staple of any good system and a required skill for any company. In this course, Irina Scurtu will assume zero messaging knowledge, and she will teach you everything you need to know to understand asynchronous messaging in .NET and explain how you can simplify the process of integrating it into your applications by using the very popular library, MassTransit.

Course Curriculum

5h 13m 10 sections
Welcome
01:59 Free preview
What will you learn in this course?
03:04 Free preview
Who is the course for and prerequisites
02:05 Free preview
What is the Problem with HTTP APIs?
05:20
Things to consider when using asyncronous messaging
03:43
Why asyncronous messaging?
06:33
What is a message
02:16
Delivery modes/guarantees
03:13
Topologies
01:57
Endpoints
02:10
Installing RabbitMQ
01:06
MassTransit overview
01:37
Why use MassTransit
02:45
Downloading the solution
00:08
Tech Check
01:02
Exploring the solution
03:35
Installing MassTransit Packages
06:59
Configuring the bus
02:32
Summary
00:56
Publishing messages
06:51
Creating a consumer
00:48
What is a consumer
03:13
Ways of registering consumers
02:56
Consuming messages
01:07
Controlling the naming
08:03
Configuring endpoints.ReceiveEndpoint
03:47
Tuning a message consumer/ConsumerDefinitions
05:13
Adding headers to messages
04:58
Message expiration
03:41
Best practices around consumers
01:02
Installing MassTransit templates
02:11
Tweaking the worker project
02:33
Competing consumers
03:31
Preparing the OrderCreation project
03:16
Publishing events from consumers
03:58
Sending Commands
07:24
Adding headers to commands
01:37
Request/Response
00:46
Implementing Request/Response
09:32
Handling multiple reponse types
04:07
Determining response types
04:09
Summary
01:42
Intro to dealing with errors
00:07
Skipped queues
00:48
Dealing with skipped queues
02:41
Error queues
03:32
Configuring Error queue names
04:32
Faults
00:56
Listening to specific faults
04:30
Listening to all faults
04:46
Turning off fault events
02:56
Summary
01:03
How the retry policies work
02:32
Configuring policies
02:01
Verifying retry attempts
01:59
Policy types
02:10
Revisiting the retry flow with custom exceptions
03:45
Using Exception filters
03:59
What is a redelivery
00:56
Enabling Redelivery Plugin in RabbitMQ
01:42
Delayed redeliveries
06:03
Replaying a message
01:22
Enabling the shovel plugin in RabbitMQ
00:49
Replaying all messages
02:06
Summary
00:55
Pipes & Filters
02:38
Using Send Filters
06:45
Using Publish Filters
04:11
Using Consume Filters
03:15
Specifying filters with custom types
02:18
Filters not linked to a type
02:56
Strongly-typed filters & ways of registration
03:21
Summary
00:21
What is the outbox pattern
03:16
Revisiting the project structure
01:31
Adding the outbox tables
03:18
Enabling & configuring the bus outbox
08:54
Consumer outbox
03:43
Changing the Notification project
01:40
Bus outbox vs consumer outbox
01:07
Outbox-Inbox recap
02:38
Summary
00:54
What is the Saga pattern
01:28
What is a State machine
01:09
Real life analogy
00:53
Preparing the Saga database entities
05:38
Creating and configuring the saga component
03:05
Implementing the Events and States
04:49
Implementing state transitions
09:11
Registering the Saga
01:27
Running the Saga
01:55
Implementing OrderCancellation
08:21
Cancelling in a Paid state
10:53
Ignoring state transitions errors
01:52
Finalizing a saga
02:29
Scheduling
07:50
SagaDefinitions
01:21
Summary
00:09
Conclusion
02:18

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

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