-
-
Notifications
You must be signed in to change notification settings - Fork 364
Persistence ignorance
"Persistence ignorance" is allowing for code to stay oblivious to whichever storage technology is used underneath to persist objects.
If a system is persistence ignorant, it means that e.g. an object like this:
public class Whatever {
public int Id { get; set; }
public string Text { get; set; }
}
can be saved and retrieved again, and the system need not care if it's NHibernate, Entity Framework, HybridDB, or whatever that saves and loads the object.
Rebus aims to be persistence ignorant in every way, thus providing storage abstractions for
- transport
- sagas
- subscriptions
- timeouts
allowing you to take advantage of these mechanisms and not care if they're saved in MongoDB or SQL Server.
This also includes the ability to be "transport ignorant", meaning that - once it has been properly configured and set up - the code can stay oblivious to whether SQL Server, MSMQ, RabbitMQ, Azure Service Bus, etc..., is moving messages around.
Please note that it's YOUR CODE that can stay ignorant - it does not free the developer from knowing what's actually cooking underneath the covers. I would say that it does not require detailed knowledge about the chosen technologies, but some minimum of knowledge must be applied when configuring Rebus in order to configure it in the way that makes the most sense.
Basic stuff
- Home
- Introduction
- Getting started
- Different bus modes
- How does rebus compare to other .net service buses?
- 3rd party extensions
- Rebus versions
Configuration
Scenarios
Areas
- Logging
- Routing
- Serialization
- Pub sub messaging
- Process managers
- Message context
- Data bus
- Correlation ids
- Container adapters
- Automatic retries and error handling
- Message dispatch
- Thread safety and instance policies
- Timeouts
- Timeout manager
- Transactions
- Delivery guarantees
- Idempotence
- Unit of work
- Workers and parallelism
- Wire level format of messages
- Handler pipeline
- Polymorphic message dispatch
- Persistence ignorance
- Saga parallelism
- Transport message forwarding
- Testing
- Outbox
- Startup/shutdown
Transports (not a full list)
Customization
- Extensibility
- Auto flowing user context extensibility example
- Back off strategy
- Message compression and encryption
- Fail fast on certain exception types
Pipelines
- Log message pipelines
- Incoming messages pipeline
- Incoming step context
- Outgoing messages pipeline
- Outgoing step context
Prominent application services