RabbitMQ: AMQP Channel Best Practices
I’ve long been confused with best practices around AMQP channel handling. This post is my attempt to explain my current thoughts, partly in an attempt to elicit feedback.The conversation between a...
View ArticleEasyNetQ: IConsumerDispatcher
EasyNetQ has always had a single dispatcher thread that runs user message handlers. This means that a slow handler on one queue can cause other handlers on other queues to wait. The intention is that...
View ArticleBrighton Fuse
Last night I attended the launch of The Brighton Fuse report. This is the result of a two year research project into Brighton’s Creative, Digital and IT (CDIT) sector. It’s one of the most detailed...
View ArticleEasyNetQ: Big Breaking Changes in the Publish API
From version 0.15 the way that publish works in EasyNetQ has dramatically changed. Previously the client application was responsible for creating and disposing the AMQP channel for the publication,...
View ArticleAsmSpy Coloured Output
AsmSpy is a little tool I put together a while back to view assembly reference conflicts. Even though it took just an hour or so to knock together, it’s proved to be one of my more successful open...
View ArticleEasyNetQ: Publisher Confirms
Publisher confirms are a RabbitMQ addition to AMQP to guarantee message delivery. You can read all about them here and here. In short they provide a asynchronous confirmation that a publish has...
View ArticleRabbitMQ Request-Response Pattern
If you are programming against a web service, the natural pattern is request-response. It’s always initiated by the client, which then waits for a response from the server. It’s great if the client...
View ArticleEasyNetQ: Big Breaking Changes to Request-Response
My intensive work on EasyNetQ (our super simple .NET API for RabbitMQ) continues. I’ve been taking lessons learned from nearly two years of production and the fantastic feedback from EasyNetQ’s users,...
View ArticleEasyNetQ: Polymorphic Publish and Subscribe
From version 18.0 of EasyNetQ, you can now subscribe to an interface, then publish implementations of that interface.Let's look at an example. I have an interface IAnimal and two implementations Cat...
View ArticleEasyNetQ: Changes to Conventions With Version 0.18
TL:DR: Exchange and queue names used to have ‘.’ replaced with ‘_’. From version 0.18 this is no longer the case.Yesterday I announced version 0.18 of EasyNetQ. The big change was the addition of...
View ArticleEasyNetQ: Consumer Cancellation
Consumer cancellation has been a requested feature of EasyNetQ for a while now. I wasn’t intending to implement it immediately, but a pull request by Daniel White today made me look at the whole issue...
View ArticleEasyNetQ: Multiple Handlers per Consumer
A common feature request for EasyNetQ has been to have some way of implementing a command pipeline pattern. Say you’ve got a component that is emitting commands. In a .NET application each command...
View ArticleEasyNetQ: Send Receive Pattern
From version 0.21, EasyNetQ supports a new message pattern: Send/Receive.Whereas the Publish/Subscribe and Request/Response patterns are location transparent, in that you don't need to specify where...
View ArticleEasyNetQ: Non-Generic Subscribe
Since it’s very first version, EasyNetQ has allowed you to subscribe to a message simply by providing a handler for a given message type (and a subscription id, but that’s another...
View ArticleEasyNetQ’s Minimalist DI Container
I’ve been a long time fan of IoC (or DI) containers ever since I first discovered Castle Windsor back in 2007. I’ve used Windsor in every major project I’ve been involved in since then, and if you’d...
View ArticleEasyNetQ: Replace the Internal DI Container
EasyNetQ, is made up of a collection of independent components. Internally it uses a tiny internal DI (IoC) container called DefaultServiceProvider. If you look at the code for the static RabbitHutch...
View ArticleAre Your Programmers Working Hard, Or Are They Lazy?
When people are doing a physical task, it’s easy to assess how hard they are working. You can see the physical movement, the sweat. You also see the result of their work: the brick wall rising, the...
View ArticleHow to Run a Successful Open Source Project
A couple of months ago I attended BarCamp Brighton, an open conference at Brighton University. Everyone is encouraged to present a session, and as I don’t need much excuse to talk to a room full of...
View ArticleThe Geek Christmas Quiz 2013
This is the second year of my Geek Christmas Quiz. Six sections of the ultimate geek questions. The office competition was won by Toby Carter with a score of 46. See if you can do better. Last year’s...
View ArticleThe Geek Christmas Quiz 2013: The Answers!
Here are the answers to this year’s Geek Christmas Quiz. What does this acronym stand for? (one point per correct answer) 1. AWS – Amazon Web Services 2. SQL – Structured Query Language 3....
View Article