First read this nServiceBus overview.
I’m recording my learning so I can refer to it later.
For messaging to work you need to transport messages from one endpoint to another, once an application has created the message addressed it and put it into a queue it is up to the transport to attempt delivery. MSMQ is the default choice of nServiceBus.
Command Query Separation (CQS)
Wikipedia describes CQS as a pattern where “… every method should either be a command that performs an action, or a query
that returns data to the caller, but not both. More formally, methods
should return a value only if they are referentially transparent and
hence possess no side effects.”
Udi Dahan’s Blog Post on CQS
The Cost of Messaging
Using a messaging approach to building systems offers lots benefits that other approaches don’t but you rarely get something for nothing, Ayende’s article discusses the cost of messaging.
Publish vs Send – Wiki Article
The distributor as it’s name suggests distributes work to be done to worker services. This avoids the need for the service that decides what work is to be done from having to contact all workers or have logic that handles balancing the work load.
Worker services inform the distributor how many idle threads they have available and it dispatches the same number of jobs. When a thread completes the distributor is notified so that if any jobs are in the work queue one will be sent.
This means an administrator can monitor the work queue to see if there are enough workers to handle the load.
nService Bus Code Samples Articles
Synchronous Web Service Bridge – Udi Dahan
Pub / Sub Walkthrough – Erik Westermann
Useful info for beginners – Matt Salmon
Installation and Config
Reviews of nServiceBus
nService Bus Info on the Web
Udi’s FAQ on the nServiceBus Website – Full of programming tips
Case Studies and Scenarios for Usage
Asynchronous High Performance Login Example – Udi Dahan
The link above is to Andreas Ohlund’s blog post that explains the differences between the packaging for version 1.9 and 2.0
The main difference in the introduction of a nServicebus.core.dll and nServiceBus.Host.exe
Hosting NServiceBus in IIS