Skip to content


These packages are those implementing the queue interfaces IQueue and IQueueFactory, subscription service implementations of ISubscriptionService, and then the IIdempotenceService implementations.


The convention for queue URIs is scheme://configuration-name/queue-name and the scheme represents a unique name for the IQueue implementation. The scheme and configuration-name (represented by the URI's Host property) should always be lowercase as creating a new Uri(uriString) forces the scheme and host to lowercase.

Each configuration is a named set of options and would contain all the values required to communicate with the queue as well as any other bits that may be of interest.

The typical JSON settings structure for a queue implementation would follow the following convetion:

  "Shuttle": {
    "ImplementationName": {
      "configuration-name": {
          "OptionA": "value-a"


Stream implementations also implement the same interfaces as queues except that the IQueue.IsStream returns true which allows the service bus to handle exceptions differently.