Definition

This is a queue based datastore to support a platform service, for SOA based architectures, that routes business messages (events) using publish/subscribe pattern with the possibility to store messages with a certain retention and replay these messages to subscribers that subscribe after the message was enqueued or replay to existing subscribers. Furthermore this data store should provide us with the tooling to start doing Command Query Responsibility Seggregation pattern or event sourcing. The core of the system will be implemented using Sql Server Service Broker Queues. For more information read the intro blogpost.

Expected Features:

  • A queue like data store that allows asynchronous processing
  • A data store that can distribute it’s messages to multiple subscribers
  • A data store that can perform a replay of it’s messages (from a certain period or all messages)
  • A data store that can check retention lifetime of messages and remove them when necessary
  • A data store that can optionally send all previous messages to a subscriber that is added a long time after an message was fired
  • A data store that is manageable through default tooling (performance monitoring, intervening when production problems occur, backup …)
  • A data store that can scale up or scale out
  • A data store that can preserve the ordering of messages inside groups (functional partitioning)
  • A data store that is fully ACID without a two phase commit (so no DTC)
  • 100% test coverage (unit, performance and scenario)
  • Administrative console

Technology constraints:

  • Windows platform
  • Sql Server 2008 R2
  • Sql Server Service Broker
  • .NET 3.5

Last edited Jul 30, 2010 at 6:45 PM by TimMahy, version 7