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:
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
eventboxesbranch and send a PR toeventboxes. I will merge your PR toeventboxesbranch first, then merge it todev.The following works should be done:
MongoDbContextEventOutboxandMongoDbContextEventInboxclasses (please revisit and optimize the implemented methods too). Also implement the example: https://github.com/abpframework/abp/tree/eventboxes/test/DistEvents/DistDemoApp.MongoDbKafkaDbContextEventInbox<TDbContext>andDbContextEventOutbox<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 replaceIDbContextEventInbox<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 likePostgreSqlDbContextEventInbox<T>that inherits fromDbContextEventInbox<T>, then we can defineUsePostgreSql<TDbContext>extension method like we do inEfCoreInboxConfigExtensions. Please ask if that's not clear.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.