Skip to content

Finalize the Outbox & Inbox patterns for the distributed event bus #10033

@hikalkan

Description

@hikalkan

I've completed the basic implementation with some missing stuff. With this issue, we will complete the PR #10008. Please create a new branch from eventboxes branch and send a PR to eventboxes. I will merge your PR to eventboxes branch first, then merge it to dev.

The following works should be done:

  • Implement & test MongoDB integration. I left it semi-done. You can start with MongoDbContextEventOutbox and MongoDbContextEventInbox classes (please revisit and optimize the implemented methods too). Also implement the example: https://github.com/abpframework/abp/tree/eventboxes/test/DistEvents/DistDemoApp.MongoDbKafka
  • I didn't implement this for Rebus since its API and implementation is pretty different from Kafka & RabbitMQ. Please work on that and implement it for Rebus.
  • Try to optimize DbContextEventInbox<TDbContext> and DbContextEventOutbox<TDbContext>. These services should be fast. We may consider to implement dbprovider (sql server, postgresql...) specific services to be able to execute raw SQL queries for update/delete. Notice that we can't replace IDbContextEventInbox<T> in provider-specific packages (e.g. Volo.Abp.EntityFrameworkCore.PostgreSql) because we may want to use multiple providers in the same application. If we create a class like PostgreSqlDbContextEventInbox<T> that inherits from DbContextEventInbox<T>, then we can define UsePostgreSql<TDbContext> extension method like we do in EfCoreInboxConfigExtensions. Please ask if that's not clear.
  • Search for TODO: in the PR Outbox & Inbox patterns for the distributed event bus #10008 and complete them. Most of them are about configuration options. One of them is for adding cancellationtoken to the inbox/outbox, so we can cancel the db operation on application stop.

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions