Our Black Friday discount is now LIVE! Use code BLACKFRIDAY24 to get 40% off any Course, Bundle or your first year of Dometrain Pro!

Getting Started: Messaging in .NET with MassTransit

Learn how to use asynchronous messaging in your .NET systems

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.

Curriculum

Welcome (01:59)

What will you learn in this course? (03:04)

Who is the course for and prerequisites (02:05)

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)

Course Info

Level:
Getting Started
Duration:
5h 13m
Rating (1,7K+):
star

Lifetime access

Add to Cart
Dometrain Pro

Want access to all of our courses? Subscribe to Dometrain Pro!

Try it for free!

About the Author

author_img

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.

More courses by Irina Scurtu