You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
generic type param for transaction, ie. ITransactionalOutbox<TTransaction> where TTransaction would be any implementation of database transaction, such as:
IDbTransaction for SQL Databases
AsyncTransaction for Neo4j
IClientSession for MongoDb
ITransaction for Redis
etc.
common contract to start connection and transaction and to commit/rollback transaction in IMessageRepository
Such change would change current implementation of these APIs:
Problem
Currently both Inbound and Outbound implementation assumes there is:
IDbConnection
IDbTransaction
or ambientTransactionScope
With such constraints there is no way to introduce other backing storage with NoSQL databases such as MongoDB, Neo4j, Redis etc..
Possible solution
Assuming we want to keep the flow of current
Resonance.Outbox
API, there should still be a way to:There should be:
ITransactionalOutbox<TTransaction>
where TTransaction would be any implementation of database transaction, such as:IDbTransaction
for SQL DatabasesAsyncTransaction
for Neo4jIClientSession
for MongoDbITransaction
for RedisIMessageRepository
Such change would change current implementation of these APIs:
ITransactionalOutbox:
TransactionalOutbox:
IMessageRepository:
SqlServerMessageRepository:
and would also introduce extension of contract for
IMessageRepository
for managing transaction for Outbound part:Definition of done
Points of further improvement
Perhaps there also should be a way to introduce transaction options as second generic type param, ie:
The text was updated successfully, but these errors were encountered: