This is the content from my Bleeding Edge 2011 talk
on pub/sub broker design and implementation.

Due to constraints of the project (European Commission, funded by EU) I cannot publicly
distribute the implementation code at this time. I plan to do it after the
review process is done. It has been advised, that this probably won't be
the case.

Specifically, this is:

A message based pub/sub broker

Can use typed messages

Can be extended

Can communicate with anyone

Supports push and pull models

Can call you back

Service based

Fast (in memory)

Is currently fed by the Twitter gardenhose stream, for your pleasure

Anyway, I can discuss the implementation and design decisions, so here's the PPT (in
slovene only).

Put a bunch of large objects (generate load)
Since AppFabric currently supports only partitioned cache type, this will distribute
load among all cluster hosts. Thus, all hosts will store 1/N percent of objects.

Stop one node

Get all objects back
Since cache is in HA mode, you will get all your objects back, even though a host
is down - cluster will redistribute all the missing cache regions to running nodes.

Load Test Tool for Windows Server AppFabric Distributed Cachehttp://www.request-response.com/blog/PermaLink,guid,ba7b66b1-e6c6-4f49-acc0-3a3f7c32cf81.aspxhttp://www.request-response.com/blog/PermaLink,guid,ba7b66b1-e6c6-4f49-acc0-3a3f7c32cf81.aspx
Thu, 09 Dec 2010 13:07:25 GMT<p>
During exploration of <a href="http://msdn.microsoft.com/en-us/library/ee790974.aspx">high
availability</a> (HA) features of Windows Server AppFabric <a href="http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx">Distributed
Cache</a> I needed to generate enough load in a short timeframe. You know, to kill
a couple of servers.
</p>
<p>
This is what came out of it.
</p>
<p>
<img src="http://www.request-response.com/blog/images/velocitytool.png">
</p>
<p>
It's a simple command line tool, allowing you to:
</p>
<ul>
<li>
Add millions of objects of arbitrary size to the cache cluster (using <font face="Courier New">cache.Add()</font>)
<li>
Put objects of arbitraty size to cache cluster
<li>
Get objects back
<li>
Remove objects from cache
<li>
Has cluster support
<li>
Has local cache support
<li>
Will list configuration
<li>
Will max out you local processors (using .NET 4 <font face="Courier New">Parallel.For()</font>)
<li>
Will perform graceously, even in times of trouble</li>
</ul>
<p>
I talked about this at a recent <a href="http://slodug.si/blogs/system/archive/2010/12/03/zadnje-leto-nje-sre-anje-slodug-v-sredo-8-12.aspx">Users
Group</a> meeting, doing a live demo of cache clusters under load.
</p>
<p>
Typical usage scenario is:
</p>
<ol>
<li>
Configure a HA cluster<br>
Remember, 3 nodes minimum, Windows Server 2008 (R2) Enterprise or DataCenter
<li>
Configure a HA cache
<li>
Edit <font face="Courier New">App.config</font>, list all available servers
<li>
Connect to cluster
<li>
Put a bunch of large objects (generate load)<br>
Since AppFabric currently supports only partitioned cache type, this will distribute
load among all cluster hosts. Thus, all hosts will store 1/N percent of objects.
<li>
Stop one node
<li>
Get all objects back<br>
Since cache is in HA mode, you will get all your objects back, even though a host
is down - cluster will redistribute all the missing cache regions to running nodes.</li>
</ol>
<p>
You can download the tool <a href="http://www.request-response.com/blog/content/binary/appfabriccachetool.zip">here</a>.
</p>
<img width="0" height="0" src="http://www.request-response.com/blog/aggbug.ashx?id=ba7b66b1-e6c6-4f49-acc0-3a3f7c32cf81" />http://www.request-response.com/blog/CommentView,guid,ba7b66b1-e6c6-4f49-acc0-3a3f7c32cf81.aspx.NET 4.0 - GeneralArchitectureMicrosofthttp://www.request-response.com/blog/Trackback.aspx?guid=535c3bf1-3cd9-4dc8-b555-33cca28b2bd3http://www.request-response.com/blog/pingback.aspxhttp://www.request-response.com/blog/PermaLink,guid,535c3bf1-3cd9-4dc8-b555-33cca28b2bd3.aspxMatevz Gacnikhttp://www.request-response.com/blog/CommentView,guid,535c3bf1-3cd9-4dc8-b555-33cca28b2bd3.aspxhttp://www.request-response.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=535c3bf1-3cd9-4dc8-b555-33cca28b2bd3