• Courses
  • TutorialsFree
  • Learning Paths
  • Blogs
  • Authors
  • Dometrain Pro
  • Shopping Basket

    Your basket is empty

  • Business Portal
  • 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

    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
    Working with Large Language Models
    tutorial

    Working with Large Language Models

    Learn how to work with Large Language Models (LLMs). Understand the fundamentals of how GPT works, the transformer architecture, and master prompt engineering techniques to build AI agents.

    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