Search Results for

      Show / Hide Table of Contents

      Intent.Eventing.MassTransit.EntityFrameworkCore

      This module extends the Intent.Eventing.MassTransit module, by adding support for the Outbox pattern using EntityFramework Core.

      For more info on the MassTransit Outbox pattern, check out their documentation.

      What is the Outbox pattern about?

      The MassTransit Outbox pattern is a strategy used in distributed systems where messages to be sent between different components or services are temporarily stored in an "outbox" database table within the application's transactional context. These messages are then dispatched asynchronously by a separate process, ensuring reliable communication and data consistency without impacting the main transaction. This decoupling of message sending from the core transactional logic enhances performance and fault tolerance in event-driven architectures, and MassTransit is an open-source framework that supports implementing this pattern effectively within .NET applications.

      What's in this module?

      This module enhances the Intent.Eventing.MassTransit module in the following ways:

      • Configures Outbox infrastructure.
      • Configures the DbContext class for the Outbox pattern.

      Configures Outbox infrastructure

          services.AddMassTransit(x =>
          {
              ...
              x.AddEntityFrameworkOutbox<ApplicationDbContext>(o =>
              {
                  o.UseSqlServer();
                  o.UseBusOutbox();
              });
          });
      

      Configures the DbContext class for the Outbox pattern

      public class ApplicationDbContext : DbContext, IUnitOfWork
      {
          ...
      
          protected override void OnModelCreating(ModelBuilder modelBuilder)
          {
              base.OnModelCreating(modelBuilder);
      
              ConfigureModel(modelBuilder);
      
              modelBuilder.AddInboxStateEntity();
              modelBuilder.AddOutboxMessageEntity();
              modelBuilder.AddOutboxStateEntity();
              modelBuilder.ApplyConfiguration(new OrderConfiguration());
          }
      }
      
      • Edit this page
      ☀
      ☾
      In this article
      Back to top Copyright © 2017-, Intent Architect Holdings Ltd