An Action Cache
Do you ever find yourself in a loop calling a method that expects an Action or a Func as an argument? Here’s an example from an EasyNetQ test method where I’m doing just that: [Test, Explicit("Needs a...
View ArticleHow to stop System.Uri un-escaping forward slash characters
Sometimes you want to construct a URI that has an escaped forward slash. For example, the RabbitMQ Management API requires that you encode the default rabbit VirtualHost ‘/’ as ‘%2f’. Here is the URL...
View ArticleRestarting RabbitMQ With Running EasyNetQ Clients
Here’s a screenshot of one of my tests of EasyNetQ (my easy-to-use .NET API for RabbitMQ). I’m running two publishing applications (top) and two subscribing applications (bottom), all publishing and...
View ArticleWhy Write a .NET API For RabbitMQ?
Anyone who reads this blog knows that my current focus is writing a .NET API for RabbitMQ which I’ve named EasyNetQ. This is being paid for by my excellent clients 15Below who build high volume...
View ArticleThoughts on Windows 8 (part 2)
Back in June I wrote some thoughts on Windows 8 after the initial announcement. Now that we’ve got more details from the Build conference, I thought I’d do a little update. Microsoft have climbed down...
View ArticleSome Thoughts On Service Oriented Architecture
I’ve been writing a high-level ‘architectural vision’ document for my current clients. I thought it might be nice to republish bits of it here. This is the section that makes a justification a service...
View ArticleSome Thoughts On Service Oriented Architecture (Part 2)
I’ve been writing a high-level ‘architectural vision’ document for my current clients. I thought it might be nice to republish bits of it here. This is part 2. The first part is here. My Client has a...
View ArticleA Useful Linq Extension Method: Intersperse
Have you ever had a case where you want to insert a constant item in-between each element of a list of items? For example, if I’ve got a list of numbers: 1,2,3,4,5 And I want to insert 0 between each...
View ArticleThe Database As Queue Anti-Pattern
“When all you have is a hammer, every problem looks like a nail.” When all you know is SQL Server, it’s tempting to try and solve every problem with a relational database, but often it’s not the best...
View ArticleEasyNetQ: Topic Based Routing
EasyNetQ is my simple .NET API for RabbitMQ. I’ve just added a new feature, Topic based routing. It’s very cool. Topic based routing is a RabbitMQ feature that allows a subscriber to filter messages...
View ArticleHelp! How Do I Detect When a Client Thread Exits?
Here’s an interesting library writer’s dilemma. In my library (in my case EasyNetQ) I’m assigning thread local resources. So when a client creates a new thread and then calls certain methods on my...
View ArticleHow Do I Detect When A Client Thread Exits? Make The Client Tell You.
Yesterday I asked the LazyWeb for some help: how does library code detect then a client thread that has called one of its methods exits? There followed a very useful discussion on Stack Overflow. I’ve...
View ArticleThe Configuration Complexity Clock
When I was a young coder, just starting out in the big scary world of enterprise software, an older, far more experienced chap gave me a stern warning about hard coding values in my software. “They...
View ArticleEasyNetQ: A Breaking Change, IPublishChannel
EasyNetQ is my high-level .NET API for RabbitMQ. Until recently, to publish a message using EasyNetQ you would create an instance of IBus and then call the publish method on it: bus.Publish(message);...
View ArticleTime To Consider Node.js?
Unless you’ve been living under a rock for the past couple of years, you’ll have heard the buzz about Node.js, a platform for building network applications in Javascript. If, like me, you’re a .NET...
View ArticleEasyNetQ: Introducing the Advanced API
EasyNetQ is an easy to use .NET API for RabbitMQ. Check out our new homepage at easynetq.com. EasyNetQ's mission is to provide the simplest possible API for RabbitMQ based messaging. The core IBus...
View ArticleUse AutoResetEvent To Unit Test Multi-Threaded Code
I’ve been guilty of using a very nasty pattern recently to write unit (and integration) tests for EasyNetQ. Because I’m dealing with inherently multi-threaded code, it’s difficult to know when a test...
View ArticleWhen Should I Use An ORM?
I think like everyone, I go through the same journey whenever I find out about a new technology.. Huh? –> This is really cool –> I use it everywhere –> Hmm, sometimes it’s not so great...
View ArticleEasyNetQ: Continuous Delivery with TeamCity and NuGet
I recently applied to have EasyNetQ, my awesome RabbitMQ API for .NET, build on the CodeBetter TeamCity build server (you can log on as ‘guest’ with no password). The very helpful Anne Epstein set it...
View ArticlePlaying with Twitter
My excellent clients, 15Below, are interested in exploring how social media, like Twitter and Facebook can work in their business area, travel communications. I’ve been tasked with investigating the...
View Article